diff --git a/docs/how-it-works.md b/docs/how-it-works.md
index 3481f57..9535376 100644
--- a/docs/how-it-works.md
+++ b/docs/how-it-works.md
@@ -30,7 +30,8 @@ image-use --backend web
├── click Send once and confirm a new message (never replay an uncertain send)
├── poll the page: wait until streaming stops AND a new asset is stable
└── fetch the asset bytes in-page (credentials:'include') → base64 → save
- (the signed estuary/content URL is authorized by the browser's own cookies)
+ (the signed estuary/content URL is authorized by the browser's own cookies;
+ the 2026-09 redesign serves a blob: URL instead, which only the page can read)
```
No tokens leave the browser. Each run's chat lands inside the `imagegen` Project (auto-created) instead of the top-level history; pass `--project ""` to opt out, and the conversation is deleted afterwards by default (`--keep-conversation` to keep it).
diff --git a/docs/how-it-works.zh-CN.md b/docs/how-it-works.zh-CN.md
index 1c14e1d..62daa5d 100644
--- a/docs/how-it-works.zh-CN.md
+++ b/docs/how-it-works.zh-CN.md
@@ -28,7 +28,8 @@ image-use --backend web
├── 用真实键盘输入打提示词 (ProseMirror/React 输入框不认纯 DOM 的 `fill`)
├── 轮询页面:等流结束 且 新的
资源稳定
└── 在页面内 fetch 资源字节 (credentials:'include') → base64 → 存盘
- (签名的 estuary/content URL 由浏览器自己的 cookie 授权)
+ (签名的 estuary/content URL 由浏览器自己的 cookie 授权;
+ 2026-09 改版后图片是 blob: URL,只有页面自己能读)
```
token 不出浏览器。每次出图落在 `imagegen` 项目里(自动创建),且**默认出图后删除该对话**不留历史(`--keep-conversation` 可保留);传 `--project ""` 可退回普通顶层对话。
diff --git a/image-use b/image-use
index 018e44c..f16bf7d 100755
--- a/image-use
+++ b/image-use
@@ -212,6 +212,45 @@ WEB_PROJECT_URL = "https://chatgpt.com/g/{gizmo_id}/project"
DEFAULT_PROJECT = "imagegen"
# Image assets render as
whose src points at one of these backend paths.
WEB_IMG_SRC_RE = r"estuary/content|files/download|oaiusercontent"
+
+# chatgpt.com DOM selectors, shared by the page-side JS and the chrome-use
+# commands. ChatGPT rolls UI redesigns out gradually (issue #41, 2026-09), so
+# each list keeps the older layout's selector FIRST and adds the redesigned
+# one after it — whichever the account is served, one of them matches.
+# old: #prompt-textarea, button[data-testid=send-button],
+# [data-message-author-role=user|assistant], estuary/content
src
+# new: a bare div.ProseMirror[contenteditable] in the composer