dsh-codex-subscription 2.2.2 → 2.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.en.md CHANGED
@@ -1,6 +1,8 @@
1
+ <p align="center"><img src="icon-subscription.webp" width="128" height="128" alt="DSH Codex Subscription icon"></p>
2
+
1
3
  <div align="center">
2
4
 
3
- # DSH Codex Subscription — Use ChatGPT subscriptions in DeepSeek Harness
5
+ # DSH Codex Subscription
4
6
 
5
7
  [简体中文](https://github.com/WSL043/dsh-codex-subscription/blob/main/README.md) · **English**
6
8
 
@@ -14,52 +16,77 @@ No OpenAI API key or Codex CLI. Models, search, quota, and image generation stay
14
16
  [![MIT](https://img.shields.io/badge/license-MIT-111111.svg)](LICENSE)
15
17
  [![Star](https://img.shields.io/github/stars/WSL043/dsh-codex-subscription?style=flat&logo=github&label=Star)](https://github.com/WSL043/dsh-codex-subscription/stargazers)
16
18
 
17
- [Three-step start](#three-step-start) · [Install](#install) · [Contribute](CONTRIBUTING.md) · [Update and uninstall](#update-and-uninstall)
19
+ [Features](#feature-overview) · [Install](#install) · [Daily use](#inside-the-plugin) · [Examples](#from-sketch-to-image) · [User guide](docs/GUIDE.en.md) · [Update and uninstall](#update-and-uninstall)
18
20
 
19
21
  </div>
20
22
 
21
- <p align="center">
22
- <img src="docs/assets/codex-subscription-overview-en.webp" width="900" alt="Use ChatGPT and Codex subscriptions in DeepSeek Harness: sign in without an API key, choose models and view remaining quota">
23
- </p>
24
-
25
- Compatible with DSH `0.1.7-rc.2` plugin compatibility checks and settings APIs, while retaining support for previously supported versions.
26
-
27
- ## Three-step start
28
-
29
- 1. **Install the plugin.** Open **Plugins → Add plugin**, enter `dsh-codex-subscription` in **Package name or address**, and click **Install**.
30
- 2. **Sign in.** Follow the installation result; save your work and restart only if requested. Open **Settings -> Codex**, and choose browser sign-in. No Codex CLI and no pasted token are required.
31
- 3. **Use Codex.** Select a Codex model. Quota, subscription search, image generation, and Fast mode remain inside DSH.
32
-
33
- See below for detailed installation steps, terminal commands, updates, and removal.
34
-
35
- ## Why this plugin
36
-
37
- | Capability | What you get |
38
- | --- | --- |
39
- | **Subscription models** | Sign in to ChatGPT and use Codex without an OpenAI API key or Codex CLI |
40
- | **Recoverable and diagnosable** | Sign-in state reconciles automatically; failed reads can be retried in place, while timeouts and stale account responses cannot overwrite current state; Settings can create a support report without credentials or account identifiers |
41
- | **Visible quota** | Keep backend-provided standard Codex, Spark, and other limits separate, with reset times |
42
- | **Optional quota recovery** | Opt in to keep a turn open until a confirmed short Codex quota resets; the turn shows the wait and remains cancellable, while switching accounts retries immediately |
43
- | **Composer quota** | Choose a compact percentage, progress bar, Beta runway forecast, or no inline display |
44
- | **Safe quota reset** | See each reset credit separately and deliberately try one with a cooldown and acknowledgement |
45
- | **Subscription search** | Explicitly route search globally through DSH default search or the signed-in Codex subscription |
46
- | **Codex image generation and editing (Beta)** | Generate without references, or explicitly edit one selected image; preview, zoom, annotate regions, download the original, and get the original host path for new or edited images |
47
- | **Fast mode** | Switch between Standard and Fast directly in the composer |
48
- | **Model-aware context** | Keep catalog defaults, use each model's supported extended window, or enter a full numeric token limit for each model; Settings refreshes the model directory on open, account changes, and connection resets without overwriting an unsaved draft |
49
- | **Headless runs** | Use the same signed-in Codex provider for one-shot DSH tasks that print their answer and exit |
50
-
51
- These capabilities reuse the same local ChatGPT sign-in. Subscription routing failures stay visible and never silently switch to another paid route.
52
-
53
- ## Product screen
54
-
55
- <p align="center">
56
- <img src="docs/assets/subscription-account-en.png" width="820" alt="DSH Codex subscription main screen: ChatGPT sign-in, remaining quota and composer preferences">
57
- </p>
58
-
59
- The actual Account & preferences screen shows sign-in status, subscription quota and composer preferences. Account, quota, balance and time values are demo data, not fixed plan entitlements. Advanced options and optional components are described below.
23
+ <p align="center"><img src="docs/assets/product-account-demo-en.png" width="1100" alt="Codex subscription account and quota interface with model choices, quota windows and alerts; demonstration data"></p>
24
+
25
+ ## Feature overview
26
+
27
+ Subscription access, model controls, quota management, and image creation in one DSH workflow. Each capability is listed below; model access and quota depend on your account.
28
+
29
+ ### Models and search
30
+
31
+ | Feature | What you can do | Availability / setup |
32
+ | --- | --- | --- |
33
+ | **Subscription sign-in** | Sign in to ChatGPT and use Codex subscription models without an API key | Normal chat needs no Codex CLI |
34
+ | **Model catalog sync** | Read available models and reasoning levels from your account, with manual refresh | New models appear when your account offers them |
35
+ | **Reasoning levels** | Choose supported reasoning effort in the composer | Levels vary by model |
36
+ | **Fast mode** | Switch supported models between Standard and Fast, with a lightning indicator | Standard by default; Fast increases usage |
37
+ | **Response verbosity** | Request short, medium, or detailed responses | Follows the model default unless changed |
38
+ | **Subscription web search** | Use Codex search or choose DSH search | Auto, DSH, and Codex routing options |
39
+ | **Search scope** | Choose live / cached search, disable search, or restrict domains | Configure under Models & runtime |
40
+ | **Context budget** | Use standard, extended, or custom budgets per model | Limited by the model catalog |
41
+ | **GPT-Reserve** | Select the reserve model when your account offers it | Experimental; no promise of a separate reserve quota |
42
+
43
+ ### Accounts and quota
44
+
45
+ | Feature | What you can do | Availability / setup |
46
+ | --- | --- | --- |
47
+ | **Multiple accounts** | Add, switch, remove, or sign out of all accounts | Settings → Account |
48
+ | **Quota details** | View short / weekly windows, reset times, and separate quota groups | Only backend-provided windows and groups are shown |
49
+ | **Credits and reset cards** | View extra Credits, spending caps, and available reset cards | Shown when returned for your account |
50
+ | **Composer quota** | See remaining quota as a percentage or progress bar while chatting | Off by default; choose your display mode |
51
+ | **Runway estimate** | Estimate remaining time from recent usage | Beta; optional estimate, not a guarantee |
52
+ | **Quota alerts** | Use fixed, early, or custom short / long-window thresholds | 20% remaining by default; can be disabled |
53
+ | **Redeem reset cards** | Use an available reset card after confirmation | Confirmation and waiting safeguards; server decides the result |
54
+ | **Retry after reset** | Wait for a confirmed short-window reset before continuing | Off by default; waiting can be stopped |
55
+
56
+ ### Images and sketching
57
+
58
+ | Feature | What you can do | Availability / setup |
59
+ | --- | --- | --- |
60
+ | **Image generation** | Generate through your subscription and adjust available request model / quality options | Beta; on by default, can be disabled |
61
+ | **Reference image editing** | Continue refining an image with references | Beta; on by default, can be disabled |
62
+ | **Image viewing and download** | Zoom, pan, fit to window, and download verified originals | Built-in viewer; older images may only have previews |
63
+ | **Region-based editing** | Mark regions, add notes, and continue editing with location references | Fills the composer for you to review and send |
64
+ | **Manual canvas** | Choose an aspect ratio and draw with pen, pencil, marker, and erasers | Beta; canvas off by default |
65
+ | **Shapes and text** | Draw lines, arrows, shapes, native curves, and editable text / objects | Available in the sketch canvas |
66
+ | **Layers and image import** | Work in layers and bring images into the canvas | Images are managed as layers |
67
+ | **Smoothing and navigation** | Smooth complete strokes after release; pan, zoom, undo, and redo | Shortcuts can be customized or disabled |
68
+ | **Multiple drafts** | Save and reopen up to 20 local drafts | Stored in the current browser |
69
+ | **Import and export** | Export PNG, layered PSD, or native drafts that preserve editable strokes | PSD import supports a limited set of ordinary pixel layers |
70
+ | **Agent drawing** | Ask the agent to draw with `@sketch`, follow progress, and stop it | Beta; off by default, requires the canvas |
71
+ | **Result preview for the model** | Return a canvas image after drawing for subsequent review | Beta; off by default, adds image input usage |
72
+
73
+ ### Advanced capabilities and maintenance
74
+
75
+ | Feature | What you can do | Availability / setup |
76
+ | --- | --- | --- |
77
+ | **Codex independent subtasks** | Reuse subscription sign-in and workspace permissions; select allowed models and reasoning levels | Beta; DSH by default, Codex requires the optional component and model-selection setup |
78
+ | **Subtask component management** | Install, disable, or uninstall the official Codex subtask component from settings | Managed by supported DSH hosts; no extra login |
79
+ | **Cloud context compaction** | Continue long conversations using Codex compaction while retaining DSH history and native compaction | Beta / experimental; off by default, enabled requests use SSE |
80
+ | **WebSocket transport** | Experimentally reuse connections and context transfers, with SSE fallback on connection failure | Beta / experimental; SSE by default, no speed guarantee |
81
+ | **Support diagnostics** | Inspect prerequisites, recent operation results and host registrations without credentials or conversation text | Settings → Maintenance; unverified does not mean broken |
82
+ | **Forecast cache cleanup** | Inspect and clear local quota forecast history | Keeps sign-in, drafts, originals, and shared dependencies |
83
+
84
+ [Usage details, limitations, and optional components →](docs/GUIDE.en.md)
60
85
 
61
86
  ## Prepare DSH
62
87
 
88
+ Compatible with DSH `0.1.7-rc.2` plugin compatibility checks and settings APIs, while retaining support for previously supported versions.
89
+
63
90
  This plugin supports the latest DeepSeek Harness release recorded in its package metadata and requires a ChatGPT account that currently has Codex access.
64
91
 
65
92
  - Do not want to configure Node.js? Use [DSH-Portable](https://github.com/WSL043/DSH-Portable), a community portable desktop distribution for Windows, macOS, and Linux.
@@ -79,7 +106,7 @@ This plugin supports the latest DeepSeek Harness release recorded in its package
79
106
  3. Click **Install** and wait for completion. Follow the page instructions; save your work before restarting if requested.
80
107
  4. Open **Settings → Codex**, sign in to ChatGPT, then select a Codex model in your conversation.
81
108
 
82
- The unversioned package name installs the latest stable release. To pin a version, append `@` and the complete version from the [releases page](https://github.com/WSL043/dsh-codex-subscription/releases) to the package name; the same applies to beta releases. Enter only the package name here, not a terminal command. This plugin can be installed using its npm package name; no GitHub URL or local directory is needed.
109
+ The package name installs the latest stable release. For a specific version, enter `dsh-codex-subscription@version`; find version numbers on the [releases page](https://github.com/WSL043/dsh-codex-subscription/releases).
83
110
 
84
111
  <details>
85
112
  <summary>Terminal installation (with an existing dsh command)</summary>
@@ -104,89 +131,65 @@ dsh --profile headless "Reply with only the word: ok"
104
131
 
105
132
  </details>
106
133
 
107
- ## Feature details
108
-
109
- ### Add instructions while a task is running
110
-
111
- Use DSH’s native message queue: messages sent during generation can wait for the next turn. Where the host offers interjection, its shortcut delivers queued input at the next step of the current turn. This does not immediately rewrite a response already being generated.
112
-
113
- ### GPT-Reserve (Experimental)
114
-
115
- When the account’s official catalog advertises `gpt-reserve`, it appears at the end of the model picker as an experimental option. Availability and billing are determined by the service; a successful response does not confirm use of a separate reserve allowance. Even when ordinary Codex usage reaches 100%, the service may list `gpt-reserve` in the model catalog without returning a separate Reserve quota bucket. In that case, the composer treats Reserve quota as unknown and does not substitute ordinary Codex quota. An “allowed” response does not prove that a request was charged to Reserve.
134
+ ## Inside the plugin
116
135
 
117
- ### GPT-6 Sol / Luna
136
+ ### Everyday controls, right in the composer
118
137
 
119
- GPT-6 Sol and GPT-6 Luna are listed in [OpenAI's Codex model guidance](https://learn.chatgpt.com/docs/models). The plugin reads available models and reasoning levels from the current account's Codex catalog, so no model ID needs to be added manually; models do not appear before the account gets access. Sol suits complex coding, while Luna suits focused, high-volume tasks. Their extended context limits and Fast availability follow the account catalog.
138
+ Choose a model, adjust reasoning, enable Fast mode, and check remaining quota without opening settings for every request.
120
139
 
121
- ### GPT-6 Astra context
140
+ <p align="center"><img src="docs/assets/composer-quota-en.png" width="800" alt="DSH composer with GPT-6-Luna, reasoning controls and remaining quota"></p>
122
141
 
123
- When the official model catalog exposes GPT-6 Astra, Standard preserves the catalog window, Extended uses 872000 tokens, and Custom accepts 128000–872000 tokens (initially 272000). This limit follows the [official Codex model catalog](https://github.com/openai/codex/blob/6af345407d9c2a568da9d01b6c4b81a9e61495c0/codex-rs/models-manager/models.json#L33-L34), not the API model's total context capacity. These settings only adjust DSH's local context budget; they do not grant model access or guarantee an account's server-side capacity. Actual availability remains subject to the service.
142
+ ### Accounts and preferences, in one place
124
143
 
125
- ### Composer quota
144
+ Open **Settings → Codex** to manage accounts and quota. Enable other features as your tasks need them.
126
145
 
127
- <p align="center">
128
- <img src="docs/assets/composer-quota.png" width="800" alt="Live DSH composer with GPT-6-Astra, Max reasoning, Fast mode, and remaining quota">
129
- </p>
130
-
131
- Live example: GPT-6-Astra with Max (the highest reasoning level) and Fast mode (lightning icon), with remaining quota visible on the left.
132
-
133
- Choose Off, Percent, Progress bar, or Beta Runway under Account & preferences. When a five-hour window exists, the composer shows that window only; the popover retains all windows. A weekly-only display omits the week label and uses compact durations such as `36% · ≈10h–12h`.
134
-
135
- Runway uses official observations from the recent two hours, including unchanged readings. Repeated boundary crossings can refine the rate interval when the assumptions hold; insufficient evidence or changing intensity falls back to a conservative estimate. It remains Beta and is not a guarantee of working time. History is bounded and stored locally; resets, long gaps or disabling the feature restart calibration.
136
- Spark keeps its independent quota. The plugin does not invent five-hour limits, Credits, or spending caps that the service did not return.
137
-
138
- ### Safe quota reset
139
-
140
- If ChatGPT reports available quota resets, Settings shows each one in its own compact row with its disclosed name and expiry.
141
- You may deliberately try it before a quota reaches 100%, which is useful for a reset nearing expiry. ChatGPT still
142
- decides whether a window needs resetting and may return **nothing to reset** without spending the reset. The final
143
- action requires an acknowledgement checkbox and five-second cooldown. Cancel never consumes a reset, rapid repeated
144
- clicks are single-flight, and an uncertain network result is never retried automatically.
145
-
146
- ### Image generation and editing (Beta)
147
-
148
- A basic viewer derived from `dsh-image-viewer` is now built in, with no extra installation required. Plugin-generated image cards use the built-in viewer to keep annotation and continue-editing actions available. You can zoom, pan, fit, add region notes, and download the image. The standard **Download** action retrieves the permission- and integrity-checked exact original by default; only legacy sessions without an exact original fall back to the conversation preview.
149
-
150
- New and edited images return the exact original path on the current DSH host in the tool result, so a model or Agent can read or copy the file. The path is on the host running DSH, not a browser download link; original downloads remain session-authorized. Uninstalling the plugin does not delete generated originals.
151
-
152
- **Continue editing in composer** does not send automatically. With annotations, it attaches the clean source and a numbered location-reference image, and includes matching numbers, coordinates, notes, and instructions to exclude the markers from the result. Without annotations, it attaches only the opened image. Every marker needs a note; reference preparation failures stop the handoff. Press **Enter** to save and collapse a region note; use **Shift+Enter** for a new line. Notes remain available when the same image is reopened during the current DSH page session.
146
+ <details>
147
+ <summary>What is in each settings tab?</summary>
153
148
 
154
- A new image request does not silently include earlier images. GPT Image 2 can take longer than a normal text turn, and detailed text, exact composition, or repeated-character consistency may still need another pass.
149
+ | Settings tab | What it controls |
150
+ | --- | --- |
151
+ | **Account** | Sign-in, account switching, reset times, quota display and alerts |
152
+ | **Models & runtime** | Subscription search, context budget, connections and subtasks |
153
+ | **Images & sketch** | Separate switches for image generation, the canvas, and agent drawing |
154
+ | **Maintenance** | Support diagnostics and local quota forecast cache |
155
155
 
156
- <p align="center">
157
- <img src="docs/assets/image-preview-annotations-en.png" width="800" alt="Generated image, region note, and continue editing inside the DSH Image Viewer">
158
- </p>
156
+ **Model-aware context** follows your account's model directory; refreshing preserves your unsaved draft. Quota groups use backend-provided values, including separate buckets such as Spark.
159
157
 
160
- The screenshot above illustrates image viewing and on-image notes; available buttons can vary with the image and installed viewer version.
158
+ Subscription failures remain visible: no silent fallback to another paid route.
161
159
 
162
- ### Sketch canvas (Beta)
160
+ </details>
163
161
 
164
- ![Sketch canvas in the Chinese UI: aspect ratio, brushes, shapes, layers and zoom](docs/assets/sketch-canvas.png)
162
+ [Read the complete user guide →](docs/GUIDE.en.md)
165
163
 
166
- Use the composer pen button for manual drawing. Selecting `@sketch` only inserts the Agent entry into the composer; the Agent opens the board after you send your drawing request. You can also choose Open in sketch from an enhanced image preview. Attachment intake and removal use the native DSH component.
164
+ ## From sketch to image
167
165
 
168
- Sketch supports local drafts, image layers, aspect ratios, three brushes (solid ink, grainy pencil and translucent highlighter), lines and shapes, two erasers, undo/redo, pan/zoom and configurable shortcuts. Smoothing processes a completed stroke only after release. Up to 20 drafts stay in the current browser; attaching a sketch never sends it automatically. Its image panel manages only the current sketch, not the conversation library.
166
+ Image generation, editing, and the sketch canvas are **Beta**. The canvas and agent drawing are off by default; enable them under Images & sketch when needed.
169
167
 
170
- The board supports editable shapes and text, native curves, and a side control for size/opacity. During Agent drawing, you can view, zoom, close the panel or stop drawing; manual edits unlock when it finishes. Automatic completion previews are off by default and can be enabled under Images & sketch. The document, history and run state are retained when switching away and back. Background drawing while viewing another session is not guaranteed. Save before a full-page reload or exit; unsaved recovery is not guaranteed.
168
+ **Sketch → Attach to the composer → Describe the result → Generate.**
171
169
 
172
- **Sketch-to-image example**: draw, click Attach, describe the desired result in the composer, then send.
170
+ Draw by hand with the canvas button, or ask the agent with `@sketch` and your drawing request.
173
171
 
174
- | Original sketch | Actual plugin output |
175
- | --- | --- |
176
- | ![Mountains and cabin sketch](docs/assets/sketch-demo-source.png) | ![Watercolor mountain cabin generated from the sketch](docs/assets/sketch-demo-result.png) |
172
+ <table>
173
+ <tr><th width="50%">Original sketch</th><th width="50%">Actual plugin output</th></tr>
174
+ <tr><td><img src="docs/assets/sketch-demo-source.png" alt="Mountains and cabin sketch" width="480"></td><td><img src="docs/assets/sketch-demo-result.png" alt="Watercolor mountain cabin generated from the sketch" width="480"></td></tr>
175
+ </table>
177
176
 
178
- The request preserves the mountain and cabin composition while creating a warm watercolor travel illustration with green peaks, an orange roof, a meadow stream and morning light, without the blue outlines. GPT-5.6-Luna made one image-tool call requesting low quality. Luna is the conversation model; the subscription backend determines the actual image model.
177
+ The request keeps the mountain and cabin composition, turning it into a warm watercolor illustration with green peaks, an orange roof, a meadow stream, and soft morning light, without the blue outlines.
179
178
 
180
179
  <details>
181
- <summary>Advanced examples</summary>
180
+ <summary>Advanced examples · Layered illustration and Mona Lisa</summary>
182
181
 
183
182
  **Someone Behind the Canvas**
184
183
 
185
- **Astra draws the sketch; GPT Image 2 generates the illustration.** Astra draws 427 strokes across six layers through the native `codex_sketch` interface; Luna then calls the subscription image tool. The request uses `gpt-image-2` at low quality; the server does not report the executing model. This Beta adds PNG export, layered PSD import/export and editable draft files. PSD retains pixel layers; native drafts retain strokes. Sketch canvas and Agent drawing are separate Beta options, both off by default under Images & sketch. Drawing tools are exposed only when Agent drawing is enabled; the agent then automatically opens the current session’s board.
184
+ **Astra draws the sketch; GPT Image 2 generates the illustration.** The editable original has 427 strokes across six layers. The image request retains its composition and adds paper-art and hand-painted detail. The requested model is `gpt-image-2`; the server does not report the executing model.
186
185
 
187
- | Native sketch | Generated result |
188
- | --- | --- |
189
- | ![Sketch](docs/assets/sketch-advanced-source.png) | ![Result](docs/assets/sketch-advanced-result.png) |
186
+ <table>
187
+ <tr><th width="50%">Native sketch</th><th width="50%">Generated result</th></tr>
188
+ <tr><td><img src="docs/assets/sketch-advanced-source.png" alt="Sketch" width="480"></td><td><img src="docs/assets/sketch-advanced-result.png" alt="Result" width="480"></td></tr>
189
+ </table>
190
+
191
+ <details>
192
+ <summary>Show the reproduction prompt and original image request</summary>
190
193
 
191
194
  **Sketch reproduction prompt (reconstructed from the artwork, not the original conversation)**
192
195
 
@@ -202,6 +205,8 @@ Astra drew the original in stages. This Chinese prompt provides a starting point
202
205
  请基于本条附加草图实际调用订阅图片工具一次,生成成品插画。quality=low,模型使用当前默认,不切换型号,不额外生成。主题《画布背面有人》:保留4:3横构图、中央偏上的撕纸洞口、洞内拿颜料桶的小画师、流出成为S形河流的蓝色颜料、下方左侧未上色城市与右侧被点亮城市、纸船飞鸟。精修为惊艳的立体纸艺与精细手绘结合的编辑插画,纸张纤维、真实撕边及柔和投影,深靛蓝洞内星月,丰富青蓝颜料层次和流动质感,赭橙画师与暖色建筑,微小清晰的叙事细节。不重构为风景,不添加文字水印。必须使用本条参考图片编辑,不能仅凭文字生成。生成后简短说明完成即可。
203
206
  ```
204
207
 
208
+ </details>
209
+
205
210
  Original example released in: [Beta v2.1.0-beta.2](https://github.com/WSL043/dsh-codex-subscription/releases/tag/v2.1.0-beta.2)
206
211
 
207
212
  **Mona Lisa: Astra sketch → GPT image generation**
@@ -210,9 +215,10 @@ Example version: [2.1.0-beta.5](https://github.com/WSL043/dsh-codex-subscription
210
215
 
211
216
  Actual results supplied by the user from another computer: Astra draws on a portrait canvas, then GPT image generation turns the sketch into an oil painting.
212
217
 
213
- | Native Astra sketch | GPT-generated oil painting |
214
- | --- | --- |
215
- | ![Mona Lisa sketch drawn by Astra](docs/assets/sketch-mona-lisa-source.png) | ![Mona Lisa oil painting generated from the sketch](docs/assets/sketch-mona-lisa-result.png) |
218
+ <table>
219
+ <tr><th width="50%">Native Astra sketch</th><th width="50%">GPT-generated oil painting</th></tr>
220
+ <tr><td><img src="docs/assets/sketch-mona-lisa-source.png" alt="Mona Lisa sketch drawn by Astra" width="480"></td><td><img src="docs/assets/sketch-mona-lisa-result.png" alt="Mona Lisa oil painting generated from the sketch" width="480"></td></tr>
221
+ </table>
216
222
 
217
223
  Original sketch prompt: `@sketch 用竖版画板画一幅《蒙娜丽莎》` (Draw the Mona Lisa on a portrait canvas.)
218
224
 
@@ -220,91 +226,82 @@ Original image prompt: `帮我变成油画` (Turn it into an oil painting.)
220
226
 
221
227
  </details>
222
228
 
223
- Flare / Sunburst request overrides remain experimental: successful generation does not confirm which image engine or quality the subscription backend used.
229
+ <details>
230
+ <summary>View Images & sketch settings</summary>
224
231
 
225
- ### Composer speed
232
+ <p align="center"><img src="docs/assets/real-creative-en.png" width="564" alt="Images and sketch settings: generation, editing, model choice, and separate canvas and agent controls"></p>
226
233
 
227
- With a supported Codex model selected, open the composer's model menu to choose Standard or Fast.
228
- Standard adds no icon; only Fast shows a lightning icon before the model name. Spark does not show the speed entry. Fast mode increases speed and uses more Credits;
229
- see the [OpenAI Codex Speed documentation](https://learn.chatgpt.com/docs/agent-configuration/speed) for the current rules.
234
+ Settings shown directly as cropped screenshots from the actual DSH interface.
230
235
 
231
- ### Advanced experiments
236
+ </details>
232
237
 
233
- Opt in under **Models & runtime**. SSE and DSH subtasks remain the defaults:
238
+ Layers, native curves, brushes, undo/redo, and shortcuts are supported. Save multiple drafts, export PNG or layered PSD, and annotate generated images before continuing an edit.
234
239
 
235
- - **WebSocket** reuses connections and eligible context transfers. Failed handshakes can fall back to SSE; interrupted responses surface an error without automatic replay. Applies to the next request, does not expand context limits, and is not guaranteed to be faster.
236
- - **Codex independent subtasks** reuse your subscription login and the official DSH Codex runtime, without a separate login; install its optional component in settings. They inherit the current subscription model and workspace permissions by default. Enable DSH subtask model selection, configure allowed models and start a new session to specify the child model and reasoning effort in chat. Non-subscription sessions must explicitly select a subscription model. Shared-context subtasks remain with DSH.
240
+ [Image editing, draft storage, and PSD limitations →](docs/GUIDE.en.md#image-generation-and-editing-beta)
237
241
 
238
242
  <a id="codex-subtask-runtime"></a>
239
243
 
240
- ## Optional Codex subtask runtime
244
+ ## Optional capabilities
241
245
 
242
- Subscription chat, images, and native DSH subtasks do not need Codex CLI. Only **Codex independent subtasks (Beta)** require the optional official runtime. The plugin never downloads it in the background.
246
+ Normal subscription chat needs no Codex CLI. For **Codex independent subtasks**, use Install component under Models & runtime; disabling and uninstalling are available in the same place. Other experimental options remain opt-in.
243
247
 
244
- In **Settings → Codex → Models & runtime → Independent subtasks**, click **Install component**. DSH handles installation; the page shows its stage and offers cancellation before applying. Restart after completion, then choose Codex. Installation does not enable subtasks automatically.
248
+ [Optional components, storage cleanup, and the full user guide →](docs/GUIDE.en.md)
245
249
 
246
- ![Optional component management](docs/assets/settings-runtime-current-en.png)
250
+ ## Update and uninstall
247
251
 
248
- Prefer **Install component** above. The plugin selects a component matching the current DSH version: DSH `0.1.7-rc.2` installs component `0.1.7-rc.2`, while DSH `0.1.5-rc.2` installs component `0.1.5-rc.2`. An existing `0.1.5-rc.3` component is recognized only on a matching host. Do not omit the component version or substitute `@next`.
252
+ Find this plugin on the DSH **Plugins** page and use its update or uninstall action. Follow any restart instructions. Uninstalling this plugin does not remove other plugins.
249
253
 
250
254
  <details>
251
- <summary>Manual installation on older hosts and offline preparation</summary>
252
-
253
- Enter a component version matching the current DSH version in the plugin installer. For DSH `0.1.7-rc.2`, enter `@deepseek-ai/dsh-subagent-codex@0.1.7-rc.2`, or run:
255
+ <summary>Terminal commands</summary>
254
256
 
255
257
  ```sh
256
- dsh plugin --profile web add @deepseek-ai/dsh-subagent-codex@0.1.7-rc.2
258
+ dsh plugin --profile web update dsh-codex-subscription
257
259
  ```
258
260
 
259
- Use the same profile as the subscription plugin and restart afterwards. Offline preparation requires a complete runtime installed and verified on the target OS and architecture; copying only the subscription plugin or Codex launcher is insufficient. Model requests still need connectivity.
261
+ Run only when you want to uninstall:
262
+
263
+ ```sh
264
+ dsh plugin --profile web remove dsh-codex-subscription
265
+ ```
260
266
 
261
267
  </details>
262
268
 
263
- ### When you no longer need it
264
-
265
- To disable it, switch back to **DSH** in Advanced settings. The component stays installed so you can enable it again later.
269
+ ## Troubleshooting
266
270
 
267
- To uninstall it, click **Uninstall component** in the same section and confirm. The plugin blocks removal while Codex subtasks are running, switches back to DSH, and uses the official uninstall interface. Restart after completion. On older hosts, run this in a terminal, replacing `web` with the profile where you installed it:
271
+ <details>
272
+ <summary>No dsh command on your computer?</summary>
268
273
 
269
- ```sh
270
- dsh plugin --profile web remove @deepseek-ai/dsh-subagent-codex
271
- ```
274
+ Use **Plugins → Add plugin** in DSH and paste the package name. No terminal setup is needed.
272
275
 
273
- This removes the optional subtask component, not the subscription plugin. Subscription chat, image generation and native DSH subtasks are unaffected. The package manager may keep the component if another plugin still depends on it.
276
+ </details>
274
277
 
275
- ### Storage and cleanup
278
+ <details>
279
+ <summary>Multiple DSH installations, or a missing plugin?</summary>
276
280
 
277
- Uninstalling does not clear shared package caches or guarantee a fixed amount of reclaimed space. DSH or Portable manages those caches centrally; this plugin does not delete shared directories. Sketches, conversation history, generated originals and sign-in data are not package caches. Use their respective management controls when you want to remove them.
281
+ Install from the DSH you actually use. For terminal installation, run commands in the intended DSH environment and check its profile. Do not delete profiles or change your system PATH to force an install.
278
282
 
279
- **Storage and cache** under Maintenance shows the quota forecast cache size and lets you confirm clearing its local history. New samples are required afterwards; server quotas do not change. Support diagnostics include observed WebSocket connection, reuse and fallback counts, plus cloud compaction checkpoint saves and reuse. These counters exclude response bodies and session identifiers and do not establish a performance improvement.
283
+ </details>
280
284
 
281
- PSD import asks for confirmation first: simple 8-bit RGB files, up to 8 layers, 32 MB and 4096 pixels per side. Layers become images and the longest side is reduced to 1024 pixels. Masks, adjustments and special blending effects are unsupported. The source file stays unchanged. Use the native DSH sketch format to preserve editable strokes and objects.
285
+ <details>
286
+ <summary>How do I report a problem?</summary>
282
287
 
283
- ## Update and uninstall
288
+ Generate **Support diagnostics** under **Settings → Codex → Maintenance**, paste it into the [bug report form](https://github.com/WSL043/dsh-codex-subscription/issues/new?template=install-problem.yml), and include the steps that caused the problem.
284
289
 
285
- Find this plugin on the DSH **Plugins** page and use its update or uninstall action. Follow any restart instructions. Uninstalling this plugin does not remove other plugins.
290
+ Diagnostics exclude credentials, account identifiers, raw responses, and full logs. Never attach sign-in URLs, authorization codes, or browser callback addresses.
286
291
 
287
- <details>
288
- <summary>Terminal commands</summary>
292
+ </details>
289
293
 
290
- ```sh
291
- dsh plugin --profile web update dsh-codex-subscription
292
- ```
294
+ ## Current icon
293
295
 
294
- Run only when you want to uninstall:
296
+ The current plugin icon and its appearance in DSH’s Installed list.
295
297
 
296
- ```sh
297
- dsh plugin --profile web remove dsh-codex-subscription
298
- ```
298
+ <p align="center"><img src="icon-subscription.webp" width="200" height="200" alt="Current Codex Subscription plugin icon"></p>
299
299
 
300
- </details>
300
+ <p align="center"><img src="docs/assets/plugin-installed-en.png" width="800" alt="Codex Subscription plugin card in the DSH Installed list"></p>
301
301
 
302
- ## Troubleshooting
302
+ <sub>Captured in DSH 0.1.7-alpha.2.</sub>
303
303
 
304
- - **`dsh` is not recognized:** install from the DSH Plugins page; no terminal setup is needed.
305
- - **More than one DSH exists:** run the standard command from the intended DSH environment so that product selects the corresponding profile;
306
- - **Setup still fails:** confirm the command is running in the intended DSH environment. Do not delete the profile or change the system PATH to force an install.
307
- - **Need to report a problem:** generate a **Support diagnostics** report at the bottom of Settings, then open the [bug report form](https://github.com/WSL043/dsh-codex-subscription/issues/new?template=install-problem.yml). The report includes the OS/runtime, bounded sign-in phase, and safe request-failure categories, but excludes credentials, account identifiers, raw responses, and full logs. Paste it into the required diagnostics field; never attach sign-in URLs, authorization codes, or browser callback addresses.
304
+ ## Scope and support
308
305
 
309
306
  The ChatGPT Codex backend and DSH can change independently. This community project is not affiliated with or endorsed by DeepSeek or OpenAI.
310
307