Skip to content

Releases

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 11:21

[0.11.0] - 2026-11-02

The plugin now works beyond Codex and Claude. Ten more agents leave earlier images out of each message and fetch back the one they need, your agent can install the plugin by itself, and switching models in Codex with a tool such as cc-switch no longer turns it off.

What's new

  • Ten more agents. WorkBuddy, OpenCode, Gemini CLI, pi, DeepSeek Harness, Qwen Code, Cline, Kilo Code, goose and Cherry Studio. Images from earlier turns stay out of your messages, and the model pulls back the one it needs by its number. There is no panel on these agents: it works on its own. They are new and were not tested on the agents themselves yet, so please tell us how it goes.
  • Your agent installs it for you. Paste the sentence from the README to the agent you use. It finds out which agent it is running in from that agent's own signs, not from which model it is, sets the plugin up for that one, and keeps a record so it can be undone.
  • Switch models freely in Codex. When a tool such as cc-switch points Codex at another provider, the plugin connects again within a moment, to the provider you picked, so your images keep being managed. Turn the plugin off in the panel to stop this.

Fixed

  • File names for images Codex opens. When Codex opened an image through a path it built in code (a folder plus the file name, for example), the image got no name in the panel or in the list after a compaction, so you could not refer to it by its file name. It now gets its name whenever the file name is written in the code.
  • No more names on the wrong image. When Codex opened several images in one step and the name of one could not be told, the next one's name could land on it, and images the model fetched back in the same step could take a name too. A name now goes only to the image it belongs to; when that is unclear, the image gets none.

After updating

  • Restart Codex, and reopen Claude sessions that were open, so they use the new version.
  • On another agent, paste the install sentence from the README to it, or follow INSTALL.md.

How we tested

  • Unit tests (338), including every request format the new agents use and what installing writes to each agent's settings and puts back.
  • Model tests in Codex: Auto-select passed all 20 checks in Chinese and in English, and the feature notes all 18. In the compaction test the model opened two images in a loop, and their file names were not known; 0.10.0 misses them the same way.
  • A live test in Claude Desktop: earlier images were left out, and the model fetched one back by its number.
  • The image names in this machine's 163 Codex tasks, read with the old and the new version: 20 images got their name, none got a different one, and the 10 that lost theirs had a wrong one (mostly a folder name).
  • The ten new agents were not run: their adapters follow each agent's code and docs.
Technical details
  • The code is now in three layers (docs/v0.11/plan.md): a core that knows no platform, the panel (Codex desktop and Claude Desktop only), and a thin adapter per platform. A layer test keeps them apart; 668 rewrite cases stay byte for byte what they were; one contract test checks each request-format translator: OpenAI Responses, OpenAI Chat Completions (new), Anthropic Messages and Gemini (new).
  • On the new agents the engine reads the images from the requests themselves, gives them ids by content, and keeps them in the data folder for cam_view_image. Automatic selection is always on; feature lines are off (a terminal would show them). A session is the one the agent's header names, else x-cam-session from our pi extension, else the first prompt.
  • cam detect reads the variables each agent sets for its shell commands (CODEX_THREAD_ID, CLAUDECODE, CODEBUDDY, OPENCODE, GEMINI_CLI, PI_SESSION_ID, DSH_SHELL, QWEN_CODE, CLINE_ACTIVE, KILO, GOOSE_TERMINAL); cam connect <agent> --apply writes the base URL and the MCP server into the agent's settings and records each changed value for cam disconnect. It never copies a settings file, since those often hold API keys. goose (YAML) and Cherry Studio (settings in the app) get printed steps.
  • DeepSeek Harness gets a dsh bundle that turns dsh's own image-offload row off and offloads earlier turns' images at each new turn, keeping dsh's over-budget offload as a fallback.
  • The engine stays running while a plugin service of any agent checks in, not only while Codex or Claude runs. Session ids no longer have to be UUIDs.
  • Codex: when config.toml no longer routes through the engine but the user enabled it, the engine routes it again to the provider now set (watched file, and a check every 15 s; three times in ten minutes stops it).
  • The engine reads the path of each view_image call in code-mode source without running it, and takes its last string when that is an image file name: p + "a.png", `${dir}/a.png` and join(dir, "a.png") give a.png; p + name, a bare ".png", ?: and || give none.
  • Images that cam_view_image returned in the same code are copies, known by the line before them, and take no name; the other images follow the calls in order only when their count matches the number of calls.

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 10:51

[0.10.0] - 2026-11-01

Long conversations keep their images. When Codex or Claude Code compacts a long conversation, or when you go back to an earlier Claude session, the images from earlier turns are no longer lost: they keep their numbers, and the model can still tell which is which and open the right one again.

What's new

  • Images survive compaction in Codex too. Until now, when Codex compacted a long task, every image a tool had opened or generated disappeared from the model's view; only the images you uploaded stayed. Now they come back as a short list, each with what the model noted about it and what you said about it, and the model can open the original again when it needs to. The panel marks these images as from before the compaction.
  • A shorter list after a compaction. Earlier images now take one line each, in Codex and in Claude Code. In a real session with 127 earlier images, that is about half the space they took before.
  • Better notes. The model can correct a note it got wrong, an image you send twice is listed once, and if you stop a reply before the model has noted its new images, it notes them in the next one.

Fixed

  • The plugin works in Claude Code again. Since 0.9.0, Claude Code 2.1.309 and later skipped part of the plugin, so Claude sessions did not use it at all, even though the image tool still showed. If you use Claude Code, this is the main reason to update.
  • Claude sessions keep their images when you come back to them. When you edit an earlier message in Claude Desktop, it carries on in a new session file. Before, the image numbers started over there and the model's notes could end up on the wrong image. Now numbers, notes and your checked images carry over, and notes already put on the wrong image in older sessions go back to the right one.
  • Compactions in Claude Code are no longer missed. With Claude Code 2.1.304 and later, some compactions were not recognized, and none of the earlier images came back.
  • Lower cost in Claude Code. Leaving earlier images out kept breaking Claude's prompt cache, so in our test a session with the plugin cost about twice as much as one without (since 0.4). It now costs about 1.3 times as much.
  • Smaller fixes: images read several at once, or just as a request went out, could miss their number; long notes and your ratings were cut short; after a compaction, a small model sometimes stopped looking at the new images you named.

After updating

  • Reopen Claude sessions that were open, so they use the new version.

How we tested

  • A long task in Claude Code, with 51 images, two compactions and a fork: the model answered 19 of 20 questions about earlier images with the plugin. Without it, it answered all 20, because these images were files on disk it could read again; images pasted into the chat have no such copy.
  • A real long session with 152 images, replayed turn by turn with two compactions: the model picked the right image for all 12 questions asked after them.
  • Unit tests, replays of real Codex and Claude sessions, a live test in Claude Desktop, and model tests in Codex (three checks failed, none because of this version's changes).
Technical details
  • After Codex compacts a task, the images that tools viewed, generated or returned before the compaction go back into the request right after it: pinned images as originals, the others one line each (ID, name, source, turn, feature line, ratings). The same one-line list replaces one placeholder per image after a compaction on both platforms: for 127 earlier images an estimated 7–9K tokens per request instead of 17–20K.
  • Claude Code 2.1.309 refused the plugin's Claude mod because it named environment variables through a variable; the mod now names each one directly.
  • Claude Code 2.1.304 and later keep the last messages through a compaction; the plugin now links them the way Claude Code does.
  • When Claude Desktop continues a session in a new transcript, the plugin follows it back to the earlier transcripts, also across several forks, and matches feature lines written under the renumbered IDs back to the right images. Resumed and forked sessions start with the previous session's checked, pinned and Auto-select settings.
  • Feature lines and ratings are cut by width rather than by character count, whatever the language setting; ratings keep as much as feature lines (30 Chinese characters or 100 letters, up from 15 characters).
  • When parallel Reads returned out of order, an image could get no ID (since 0.4); every such image now gets its ID in the order it was read. When a request went out before Claude Code had written the turn's newest images to its transcript (about 1 request in 75 on the development machine), the engine now reads the transcript again for up to 1.5 seconds.
  • The note to the model now says only the omitted images are not to be read with other tools, and that new ones are looked at as usual.
  • Prompt cache: the engine places the message cache marks itself (where an earlier request had one before the first change, and just before the first image that will be left out later). Placeholders show only the ratings noted by the image's own turn, and the list after a compaction the notes as they stood then, so neither changes after it goes out.
  • Earlier transcripts are read only up to the compaction, and their image data stays on disk until needed: for the longest real session tested (9 transcripts, 210 images), about 60 MB more memory and under 2 seconds for the first index.
  • The three Codex self-test checks that failed (gpt-6-sol, low effort): the model misread a faint digit, the model said it could not see an image that was sent, and an image viewed through a path built in code gets no name, as before.

v0.9.1

Choose a tag to compare

@github-actions github-actions released this 29 Oct 11:29

[0.9.1] - 2026-10-29

Japanese panel support and smoother image previews.

Features

  • The panel now supports English, Simplified Chinese and Japanese. Codex follows its app language; Claude Desktop's Code panel reads Claude's own language setting independently. Changing the language keeps the original session title. Model instructions and command-line messages are unchanged.
  • Added a Japanese README with installation, opening the panel and image-selection guidance. Detailed installation instructions remain in the shared English INSTALL.md. Addresses #16.

Fixes

  • Hold Ctrl and scroll the mouse wheel to zoom images in the preview. Fixes #15.
  • Keyboard focus stays inside the image preview dialog while it is open, including when navigating with Tab and Shift+Tab. Fixes #14.

Notes

  • Verified on Windows with 267 unit tests, synthetic host-language changes and an isolated plugin installation/startup test. Claude's saved language was checked against the installed desktop app; live switching in Claude Desktop has not been tested.

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 07:43

[0.9.0] - 2026-10-23

Separate provider routes and image management through compatible gateways.

Features

  • Image management now works through compatible custom endpoints in Codex and Claude Desktop's Code tab. Codex's configured provider endpoints and Claude Code's original endpoint are preserved behind separate local routes, including their port, base path and query parameters. Model names and authentication remain with the client.
  • Disabling Codex restores the original endpoint lines while preserving addresses the user changed afterwards. Claude Code only restores process variables it still manages.

Fixes

  • Claude requests outside /v1/ no longer fall through to ChatGPT with their credentials. Unknown or conflicting requests are rejected locally. Fixes #10.
  • Custom Claude endpoints use the Claude image rewrite rules regardless of their domain. HTTP and WebSocket forwarding follow the same provider binding and credential isolation.
  • Registered routes use a separate loopback listener, so an older plugin copy cannot accept their requests after only one platform has been updated. Route bindings survive engine replacement.
  • Upgrades preserve earlier runtime files that Codex's cache cleanup can partially remove while a Windows process is still using them. Installation no longer removes the working plugin before adding its replacement, and uses the install result to select the new version.

Notes

  • Supports Responses-compatible Codex endpoints and Anthropic-compatible Claude Code endpoints. This does not translate API protocols or add Bedrock, Vertex or Foundry transports.
  • Codex reads endpoint settings in its user config.toml. Unsupported endpoint syntax stops setup before changing configuration. If another tool changes provider endpoints later, enable the plugin again and restart Codex to bind the new addresses. External profile files and environment overrides are not automatically rewritten.
  • Verified on Windows with synthetic conversations, images, credentials and local upstreams. Live model calls through third-party gateways have not been tested.
  • The real Windows install scripts were tested through installation, an upgrade with the old runtime directory held open, and uninstall. The old runtime remained intact and the user's configuration was restored.

v0.8.3

Choose a tag to compare

@github-actions github-actions released this 22 Oct 01:54

[0.8.3] - 2026-10-22

A fix for Codex logged in with an API key.

Fixes

  • Codex logged in with an API key now connects with the plugin installed. Its requests went to ChatGPT's backend, which takes ChatGPT logins, not API keys. They now go to the OpenAI API, where Codex sends them without the plugin, and images are managed there as well.

Notes

  • Checked with the Codex command line and a fake API key: through a test engine, the request reached the OpenAI API, which answered "Incorrect API key provided". Managing images with a real API key has not been tried yet.
  • Codex set up with its own model provider, such as cc-switch or a third-party relay, still does not go through the plugin.

v0.8.2

Choose a tag to compare

@github-actions github-actions released this 21 Oct 13:36

[0.8.2] - 2026-10-21

The model notes where each image is set, not its "scene".

Changes

  • A feature line now starts with the place the picture is set in, such as "study" or "outside the café", instead of the scene. In a film project the model had read "scene" as a scene number and named each image after it and what the image was for, such as "scene 04 café exterior sketch" or "scene 04 café exterior detail check": one task got 28 scene filters for 52 images. Scene numbers, versions and purposes now stay out of the place, and time of day and weather go in the features. An image of several places, such as a storyboard, is noted as "several places"; one set nowhere as what it is: character, object, document or web page.
  • Feature lines already written stay as they are, so a task from before keeps its old scene filters next to the new places.

Notes

  • Tested on Windows with GPT-6 Sol at low effort, in Chinese and English. A new case in the notes self-test uploads images named like 03场_书房_首帧_v2.png and describes them with the scene number, version and purpose: the places came out as "书房" / "study" and "咖啡店外" / "outside the café", with none of those, and the same place for both images of the study. GPT-6 Luna and Astra gave the same places.
  • With Sol, the placeholder and need IMG-xxx self-tests passed in both languages, and so did the notes self-test in Chinese. In English, Sol answered a bare rating with "keep your feedback about the first in mind", which the test counts as mentioning the notes; it said such things now and then in 0.8.0 too. GPT-6 Luna was run but no longer holds a release back: as in 0.8.0, it twice answered a bare rating with the notes only and missed a rating once, and once asked again for an image the user had just checked back.

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 21 Oct 13:07

[0.8.1] - 2026-10-21

A fix for the panel's filters.

Fixes

  • The filters take at most two rows. In a long task where the model named many scenes, the filter buttons filled most of the panel and left a small strip for the thumbnails. The ones that don't fit now fold into N more at the end of the second row, which shows them all. The filter you picked always stays in view, and picking one from the full list folds them again.

Notes

  • Checked in the panel's development page with a synthetic task of 28 scenes, in Chinese and English, light and dark, and down to a 260-pixel-wide panel. Not yet checked in Codex or Claude Desktop with a real task.

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 16:22

[0.8.0] - 2026-10-20

The model keeps notes on your images, and the panel finds them by what you remember.

Features

  • The model notes what each new image shows: the scene first, then what can be seen, such as "rainy blue night | close-up, facing the camera, neon reflections". When you rate an image ("the first one is too dark", even turns later), it notes your words under that image. It writes these notes at the start of its reply as Markdown link definitions, which Codex and Claude Desktop don't display, and doesn't mention them in its answer.
  • Placeholders carry the notes, with the latest three ratings and the turns they came from, so after a compaction, or many turns later, the model can still tell the images apart. In the case that started this release, a face close-up the user had called the best and a half-length shot from the start of the task, the model picked the close-up after the task was compacted, without fetching.
  • New images carry their ID from the turn they appear in, so the model can match your words to the right image at once. The placeholder's second line is shorter, to make room for the notes.
  • The panel is redone as one screen:
    • A card at the top with the next request's estimated size, the savings and what the next message sends. Show details adds the last request, the images the model fetched in the latest turn, and what subagents and side chats saved.
    • A search box that finds images by what they show, by scene, or by what you or the model said in that turn, and filters for uploads, generated images and each scene.
    • Thumbnails grouped by turn, newest first, with small marks. Images that won't be sent are gray, and the box at the end of a turn's line covers the whole turn.
    • Click a thumbnail to preview it across the panel, with a Send every turn checkbox (Auto-select) or a Send checkbox (manual). Click outside the image or press Esc to go back.
    • An ID in the Model needs bar or among the fetched images scrolls to that image and flashes it, clearing a search or filter that hides it.

Changes

  • Subagents and side chats in Codex always follow Auto-select. The Auto-select too switch is gone; where it was off in 0.7, it is on again.
  • The search and filters replace the source filter of 0.2. Pinned images are now called Send every turn.
  • In Claude Code, requests are rewritten as soon as a session has images, to add the note for the model and the IDs, not only once you uncheck one. On Claude accounts created on or after August 31, 2026, this leaves out the earlier thinking of the turn in which the first image came in, once.
  • In Codex, a task with Auto-select off is left alone until you uncheck an image, as before: its requests go out as they are, over WebSocket, and the model keeps no notes there until then.

Fixes

  • The engine no longer exits when Codex resets a WebSocket connection the engine has declined, which Codex does when the engine moves a task to HTTP. In 0.7.1 the engine process exited then, and requests failed until it was started again.

Notes

  • Tested on Windows with the app-server of Codex 0.163 (the one Codex desktop 26.1013 ships) and GPT-6 Sol, Luna and Astra at low effort, in Chinese and English. New images got a note, ratings were noted on the right image, and the replies didn't mention them. After thread/compact/start, all four images of the user's case were placeholders with notes; asked which one to use as a face reference, all six runs chose the close-up rated the best, without fetching.
  • The release self-tests (placeholders, need IMG-xxx, Auto-select, subagents and side chats, and the new notes test) passed with GPT-6 Sol and Astra in both languages. GPT-6 Luna failed five of its ten runs: it misread a fetched corner digit (5 as 3), as in 0.3 and 0.6; once asked for images to be attached instead of fetching them; once said it couldn't see an unchecked image without asking for it by ID; once missed a rating; and once its subagent didn't fetch the image of its first turn. Since the model often notes small details in the upload turn, the Auto-select test now also accepts an answer taken from the model's own notes.
  • In Claude Desktop with Claude Code 2.1.299 and Claude Haiku 5.5, in Chinese and English, the notes were written at the start of replies and stayed hidden, and ratings were noted on the right image. Those ratings were relayed from another session, worded as the user's own. Ratings typed in the session itself, whether a note shows for a moment while a reply streams in, and the notes after /compact are not tested yet.
  • GPT-6 Luna at low effort sometimes missed a rating, more often in English, and twice gave no visible reply in a turn where the user only rated images. Claude Haiku 5.5 in English opened its reply to a rating with "Noted:".
  • Claude Desktop shows a link definition that ends the latest reply, which is why the notes go at the start. A place that shows the raw reply may show them; Claude Code in a terminal is not checked yet.

v0.7.1

Choose a tag to compare

@github-actions github-actions released this 15 Oct 16:47

[0.7.1] - 2026-10-16

Bug fixes for child tracking and interrupted HTTP requests.

Fixes

  • Codex composer prediction requests no longer appear as side chats in the task's panel. #7, fixes #3.
  • Tracking a subagent or side chat now retries after a temporary write failure, so a failed first write does not keep it out of the task's panel. #9, fixes #6.
  • Cancelling an HTTP request now closes its pending or active upstream connection. If an upstream response breaks partway through, the client is notified instead of being left waiting, so it can report or retry the failure. #8, fixes #4 and #5.

Notes

  • Tested on Windows with GPT-6 Sol at low effort: automatic image selection, fetching images when needed, cancelling a response, and recovery after an interrupted upstream response. Codex retried the interrupted response successfully and continued the conversation.
  • CI checks unit tests, plugin installation and startup, and install/uninstall scripts on Windows, macOS and Linux. Claude Code was not live-tested for this patch.

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 16:59

[0.7.0] - 2026-10-14

Subagents and side chats in Codex follow Auto-select too.

Features

  • Side chats no longer resend the task's images. A side chat you open in a Codex task carries the task's whole history, images included; it now goes out with those images as placeholders, except the ones you pinned, and when an answer needs one, the model fetches it from the task by ID. Reported in #2, where a text-only question in a side chat carried 39 images (48.75 MB) and failed with Broken pipe.
  • Subagents the model starts without the task's history leave out the images of their own earlier turns and fetch the ones they need by ID. The same goes for subagents they start.
  • The task's panel lists its subagents and side chats once they have sent a request: folded to one line with how many there are, what their last requests saved, and an Auto-select too switch, on by default, also in tasks from before 0.7. Unfold it to see each one's name, rule and last request. Switched off, their requests go out as they are.
  • Subagents started with the task's history follow the task's checks, as before. Claude Code works as in 0.6.0.

Fixes

  • A task forked in Codex could lose the checks it takes over from the original task when its first request came while Codex was still writing the task's record.

Notes

  • Tested on Windows with the app-server of Codex 0.162 (the one Codex Desktop ships) and GPT-6 Sol, Luna and Astra at low effort. A side chat left out the task's two images, answered a text-only question without them, and fetched one back from the task to read a digit in its corner. A subagent's second turn left out the image of its first turn and fetched it back. With the switch off, both went out as they were. The panel listed each side chat and subagent with the right numbers. GPT-6 Luna's subagent once couldn't find the image file it was told about, and once Luna didn't start a subagent at all; that is the model, and the next try worked.
  • Codex doesn't document side chats and subagents for plugins: the plugin recognizes them from what Codex sends with each request. If that changes, they go out as they did before 0.7, and the task itself is not affected.
  • Images a subagent reads during one long turn all stay in that turn, as Auto-select keeps the current turn's images; they are left out from its next turn on.