dsh-image-gen 0.3.1 → 0.4.1

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.
Files changed (33) hide show
  1. package/README.en.md +256 -90
  2. package/README.md +250 -94
  3. package/README.zh-CN.md +2 -171
  4. package/docs/assets/readme/chat-example.webp +0 -0
  5. package/docs/assets/readme/comfyui-workflows.webp +0 -0
  6. package/docs/assets/readme/gallery-management.webp +0 -0
  7. package/docs/assets/readme/hero-en.webp +0 -0
  8. package/docs/assets/readme/hero-zh.webp +0 -0
  9. package/docs/assets/readme/inspiration-library.webp +0 -0
  10. package/docs/assets/readme/multi-model-compare.webp +0 -0
  11. package/docs/assets/readme/provider-settings.webp +0 -0
  12. package/docs/assets/readme/regenerating.webp +0 -0
  13. package/docs/assets/readme/revision-switcher.webp +0 -0
  14. package/docs/assets/readme/studio-workbench.webp +0 -0
  15. package/docs/assets/readme/workflow-overview.webp +0 -0
  16. package/lib/client.js +1593 -68
  17. package/lib/client.js.map +1 -1
  18. package/lib/index.js +17177 -1427
  19. package/lib/types/client/gallery-view.d.ts +3 -1
  20. package/lib/types/client/image-ref.d.ts +24 -1
  21. package/lib/types/client/index.d.ts +9 -1
  22. package/lib/types/client/inspiration-catalog-cache.d.ts +4 -0
  23. package/lib/types/client/inspiration-image-cache.d.ts +3 -0
  24. package/lib/types/client/inspiration-style.d.ts +1 -0
  25. package/lib/types/client/inspiration-view.d.ts +8 -0
  26. package/lib/types/client/multi-model-compare.d.ts +11 -0
  27. package/lib/types/client/studio-style.d.ts +1 -1
  28. package/lib/types/client/studio-view.d.ts +3 -0
  29. package/lib/types/index.d.ts +1 -0
  30. package/lib/types/inspiration-route.d.ts +6 -0
  31. package/lib/types/inspiration.d.ts +53 -0
  32. package/lib/types/shared.d.ts +2 -0
  33. package/package.json +21 -25
package/README.en.md CHANGED
@@ -1,155 +1,316 @@
1
1
  <div align="center">
2
2
 
3
- <img src="docs/assets/hero-poster.webp" alt="dsh-image-gen poster" width="100%" style="max-width: 860px; border-radius: 12px;" />
3
+ <img src="docs/assets/readme/hero-en.webp" alt="dsh-image-gen feature overview" width="100%" />
4
4
 
5
- <br /><br />
5
+ <br />
6
+
7
+ <p><a href="README.md">简体中文</a> · <strong>English</strong></p>
6
8
 
7
9
  # 🎨 dsh-image-gen
8
10
 
9
- **Complete conversational image capabilities for DeepSeek Harness: text-to-image, image-to-image, multi-image references, continuous editing, local ComfyUI, and gallery management.**
11
+ ### Native AI image creation suite for DeepSeek Harness
10
12
 
11
- [![npm version](https://img.shields.io/npm/v/dsh-image-gen.svg?style=flat-square&color=blue)](https://www.npmjs.com/package/dsh-image-gen)
12
- [![DSH Plugin](https://img.shields.io/badge/Plugin%20For-DeepSeek%20Harness-6366f1?style=flat-square)](https://github.com/deepseek-ai)
13
- [![npm downloads](https://img.shields.io/npm/dm/dsh-image-gen.svg?style=flat-square&color=emerald)](https://www.npmjs.com/package/dsh-image-gen)
14
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](LICENSE)
13
+ <p><b>In-chat generation and editing · Studio batch creation · Multi-model comparison · 500+ prompt inspirations · Gallery management · Local ComfyUI</b></p>
15
14
 
16
- **English** | [简体中文](README.md)
15
+ <p>
16
+ <a href="https://www.npmjs.com/package/dsh-image-gen"><img src="https://img.shields.io/npm/v/dsh-image-gen?style=flat-square&color=4f6ef7" alt="npm version" /></a>
17
+ <a href="https://www.npmjs.com/package/dsh-image-gen"><img src="https://img.shields.io/npm/dm/dsh-image-gen?style=flat-square&color=10b981" alt="npm downloads" /></a>
18
+ <a href="https://github.com/shanliuling/dsh-image-gen/actions/workflows/ci.yml"><img src="https://github.com/shanliuling/dsh-image-gen/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
19
+ <a href="https://github.com/shanliuling/dsh-image-gen/stargazers"><img src="https://img.shields.io/github/stars/shanliuling/dsh-image-gen?style=flat-square" alt="GitHub stars" /></a>
20
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-f5c542?style=flat-square" alt="License: MIT" /></a>
21
+ <a href="https://linux.do/"><img src="https://img.shields.io/badge/LINUX%20DO-Community-555?style=flat-square" alt="LINUX DO" /></a>
22
+ </p>
17
23
 
18
- <br />
19
-
20
- <p align="center">💬 <b>Prompt your DeepSeek Harness Agent to install:</b></p>
21
-
22
- ```text
23
- Install the image generation plugin by running: pnpm dsh plugin --profile web add dsh-image-gen@latest
24
- ```
25
-
26
- <p align="center"><sub>(Or run manually in terminal: <code>pnpm dsh plugin --profile web add dsh-image-gen@latest</code>)</sub></p>
24
+ <p>
25
+ <a href="#quick-start">Quick Start</a> ·
26
+ <a href="#core-capabilities">Core Capabilities</a> ·
27
+ <a href="#provider-support">Provider Support</a> ·
28
+ <a href="#faq">FAQ</a>
29
+ </p>
27
30
 
28
31
  <br />
29
32
 
30
- <p align="center">After installation, enter your API key or configure local ComfyUI in DSH Settings, then tell the Agent:</p>
33
+ </div>
31
34
 
32
- ```text
33
- Draw a cyberpunk cat on a neon street in a rainy night.
34
- ```
35
+ **A complete AI image creation workflow for DeepSeek Harness.**
35
36
 
36
- <p align="center">The Agent will automatically generate images and can also continue editing the previous image directly.</p>
37
+ `dsh-image-gen` goes far beyond basic in-chat image generation. It brings **continuous natural-language editing**, **Studio batch creation**, **side-by-side multi-model comparison**, a **500+ prompt inspiration library**, and **local ComfyUI** workflows into DSH. It supports **Google Gemini, OpenAI Images / Compatible, ByteDance Seedream, Aliyun DashScope**, and private local workflows. It uses a BYOK model and can isolate generated assets by workspace.
37
38
 
38
- <br />
39
+ ```bash
40
+ pnpm dsh plugin --profile web add dsh-image-gen@latest
41
+ ```
39
42
 
40
- <div align="center">
41
- <img src="docs/assets/generate-example.png" alt="Initial image generation conversation" width="48%" style="vertical-align: top;" />
42
- <img src="docs/assets/edit-example.png" alt="Continued image editing conversation" width="48%" style="vertical-align: top;" />
43
- </div>
43
+ > **Update notice:** This release includes major changes. Existing users should update to the latest version.
44
44
 
45
- </div>
45
+ <img src="docs/assets/readme/workflow-overview.webp" alt="dsh-image-gen complete AI image creation workflow" width="100%" />
46
46
 
47
47
  ---
48
48
 
49
- ## 💡 What Problem Does It Solve?
49
+ ## One plugin, four creative workflows
50
50
 
51
- **`dsh-image-gen` is an open-source image generation and editing plugin built specifically for DeepSeek Harness (DSH).**
52
-
53
- DeepSeek Harness empowers agents to use tools for various tasks. This project adds native **multimodal image generation capabilities**:
54
-
55
- ```mermaid
56
- graph LR
57
- A[User Prompt] --> B[DeepSeek Harness Agent]
58
- B --> C[generate_image / edit_image]
59
- C --> D[Gemini / OpenAI / Seedream / DashScope / ComfyUI]
60
- D --> E[Image Data]
61
- E --> F[In-chat Conversation Stream]
62
- ```
51
+ | Entry | Best for | What you can do |
52
+ | :--- | :--- | :--- |
53
+ | 💬 **Chat** | Letting the Agent understand natural-language requests | Text-to-image, image-to-image, multi-image reference, continuous editing, and in-place regeneration |
54
+ | 🎛️ **Studio** | Precise control over creation parameters | Batch generation, multiple reference images, and advanced canvas |
55
+ | ✨ **Inspiration** | Finding compositions, styles, and prompts | Browse 500+ examples, search and filter, favorite, copy, or send a prompt to Studio |
56
+ | 🖼️ **Gallery** | Organizing and reusing generated results | Search, filter, favorite, regenerate, download, batch-manage, and isolate by workspace |
63
57
 
64
58
  ---
65
59
 
66
- ## 🚀 Quick Install & Usage
60
+ ## Quick Start
61
+
62
+ ### 1. Install the plugin
67
63
 
68
- ### 1. Install Plugin
64
+ Requirements: DeepSeek Harness stable version, Node.js `^22.19.0` or `>= 24.0.0`.
69
65
 
70
- In your DeepSeek Harness workspace root:
66
+ Run this command from your DeepSeek Harness project root:
71
67
 
72
68
  ```bash
73
- # Recommended: Install or upgrade to latest release
74
69
  pnpm dsh plugin --profile web add dsh-image-gen@latest
75
-
76
- # If dsh is installed globally:
77
- dsh plugin --profile web add dsh-image-gen@latest
78
70
  ```
79
71
 
72
+ > 💬 **Power-user tip:** You can also send this directly to the Agent in a DSH chat:<br />
73
+ > `Install the image generation plugin by running this command in the terminal: pnpm dsh plugin --profile web add dsh-image-gen@latest`
74
+
80
75
  <details>
81
- <summary><b>🛠️ Alternative Installations (Git Repo / Local Dev)</b></summary>
76
+ <summary><strong>Alternative installation methods (global / GitHub / local development)</strong></summary>
82
77
 
83
78
  ```bash
84
- # Method B: Install directly from GitHub
79
+ # If dsh is installed globally:
80
+ dsh plugin --profile web add dsh-image-gen@latest
81
+
82
+ # Install the latest source directly from GitHub:
85
83
  pnpm dsh plugin --profile web add git+https://github.com/shanliuling/dsh-image-gen.git
86
84
 
87
- # Method C: Clone & install locally
85
+ # Clone the repository and install it for local development:
88
86
  git clone https://github.com/shanliuling/dsh-image-gen.git
89
87
  pnpm dsh plugin --profile web add ./dsh-image-gen
90
88
  ```
91
89
 
92
90
  </details>
93
91
 
94
- ### 2. Configure Provider & Workspace Settings
92
+ ### 2. Configure a Provider
95
93
 
96
- Open DSH Web (`http://localhost:3080`):
94
+ After restarting DSH, open:
97
95
 
98
- 1. Navigate to **Settings → Plugins → Image generation**.
99
- 2. Select a Provider. Enter an API key for cloud providers; for local ComfyUI, enter its URL and import an API Format Workflow JSON using `{{prompt}}` for the prompt and optional `{{seed}}` for the seed. For image editing, put `{{image}}` (exactly once) in the LoadImage `image` input; the plugin uploads the source image and fills in the stored filename. ComfyUI supports importing multiple named workflows with one active at a time, and the Agent can also pick one by name via the optional `workflow` tool parameter.
100
- 3. Optionally enable **Save to workspace** (enabled by default) and specify subfolder, then click **Save**.
96
+ **Settings → Plugins → Plugin Configuration → Image Generation**
101
97
 
102
- <div align="center">
103
- <img src="docs/assets/settings-preview.png?v=0.1.7" alt="Settings preview" width="720" />
104
- </div>
98
+ Choose a Provider, enter your API key, and adjust the model, Endpoint / Base URL, and workspace-save options as needed. For ComfyUI, enter an address reachable by the DSH Host and import an **API Format Workflow JSON** file.
105
99
 
106
- ### 3. Generate Images in Chat
100
+ ### 3. Start creating
107
101
 
108
- Simply prompt in the chat input:
102
+ Describe the image you want directly in chat:
109
103
 
110
104
  ```text
111
- Generate a minimalist modern architecture living room illustration.
105
+ Create a cinematic cyberpunk cat on a neon street at night, 16:9.
112
106
  ```
113
107
 
114
- The Agent will call `generate_image` and return the image directly in the conversation stream.
108
+ You can also upload a reference image directly for style transfer or editing:
115
109
 
116
- ### 4. Browse Native Image Gallery
110
+ ```text
111
+ Keep the character and composition unchanged, then add black sunglasses to the cat.
112
+ ```
117
113
 
118
- Click the **`[Gallery]`** Tab in the top navigation bar to browse and search all generated images across conversations:
114
+ <br />
119
115
 
120
116
  <div align="center">
121
- <img src="docs/assets/gallery-preview.png" alt="Gallery preview" width="820" />
117
+ <img src="docs/assets/readme/provider-settings.webp" alt="DSH Plugin Settings" width="46%" />
118
+ <img src="docs/assets/readme/chat-example.webp" alt="Chat generation and editing example" width="46%" />
119
+ <br />
120
+ <sub>Left: Provider Settings · Right: In-chat generation, editing, and continuous refinement.</sub>
122
121
  </div>
123
122
 
123
+ <br />
124
+
125
+ For more precise parameter control, open **Gallery** from the conversation header, then switch between **Gallery / Studio / Inspiration / Favorites**.
126
+
124
127
  ---
125
128
 
126
- ## ✨ Key Features
129
+ ## Core Capabilities
130
+
131
+ ### 💬 In-chat generation, editing, and revision switching
132
+
133
+ - Use natural language for text-to-image, image-to-image, multi-image reference, and style transfer.
134
+ - Edit the original prompt to regenerate, then switch between revisions on the same image card.
135
+
136
+ <br />
137
+
138
+ <div align="center">
139
+ <img src="docs/assets/readme/regenerating.webp" alt="Image regeneration in progress" width="46%" />
140
+ <img src="docs/assets/readme/revision-switcher.webp" alt="Switching between generated revisions on the same image card" width="46%" />
141
+ <br />
142
+ <sub>Regenerate in place after editing the prompt, then switch between previous results on the same image card.</sub>
143
+ </div>
144
+
145
+ <br />
146
+
147
+ ### 🎛️ Studio batch creation
148
+
149
+ - Support multiple reference images, and generate multiple candidates at a time.
150
+ - Control the Provider, model, aspect ratio, and quality, then save only the results you want.
151
+
152
+ <br />
153
+
154
+ <div align="center">
155
+ <img src="docs/assets/readme/studio-workbench.webp" alt="dsh-image-gen Studio workbench" width="100%" />
156
+ <br />
157
+ <sub>Import references, control parameters, generate batches, select results, and save—all within one Studio.</sub>
158
+ </div>
159
+
160
+ <br />
161
+
162
+ ### ⚖️ Side-by-side multi-model comparison
163
+
164
+ Run the same prompt and reference images across multiple models, then compare and save the results on one canvas.
165
+
166
+ <br />
167
+
168
+ <div align="center">
169
+ <img src="docs/assets/readme/multi-model-compare.webp" alt="Comparing the same prompt across multiple image models" width="100%" />
170
+ <br />
171
+ <sub>Compare results from different models on one canvas, then save the images you prefer in a batch.</sub>
172
+ </div>
173
+
174
+ <br />
175
+
176
+ ### ✨ 500+ prompt inspiration examples
177
+
178
+ - Browse and filter **500+ prompt examples**, then favorite, copy, or send them directly to Studio.
179
+ - Images are cached locally, so browsing and learning consume no tokens or generation quota.
180
+
181
+ <br />
182
+
183
+ <div align="center">
184
+ <img src="docs/assets/readme/inspiration-library.webp" alt="Prompt inspiration library" width="100%" />
185
+ <br />
186
+ <sub>Find inspiration first, then send a prompt to Studio. Browsing and copying from the local cache consume no generation quota.</sub>
187
+ </div>
188
+
189
+ <br />
190
+
191
+ ### 🖼️ Gallery, favorites, and batch management
192
+
193
+ - Manage images saved from chat and Studio in one place, isolated by workspace.
194
+ - Search, filter, favorite, download, continue editing, regenerate, and batch-manage results.
195
+
196
+ <br />
197
+
198
+ <div align="center">
199
+ <img src="docs/assets/readme/gallery-management.webp" alt="Gallery filtering, favorites, and batch management" width="100%" />
200
+ <br />
201
+ <sub>Filter, favorite, and batch-manage gallery items while keeping data isolated by workspace.</sub>
202
+ </div>
203
+
204
+ <br />
205
+
206
+ ### 🧩 Multiple local ComfyUI workflows
207
+
208
+ Bring private image generation on your local GPU directly into Agent conversations.
209
+
210
+ - Import and manage multiple named workflows with prompt presets and common placeholders.
211
+ - Let the Agent select a workflow by name for text-to-image or image-to-image generation in chat.
212
+
213
+ > ComfyUI is not yet integrated into Studio or multi-model comparison.
214
+
215
+ <br />
216
+
217
+ <div align="center">
218
+ <img src="docs/assets/readme/comfyui-workflows.webp" alt="Multiple named ComfyUI workflow settings" width="58%" />
219
+ <br />
220
+ <sub>Maintain independent workflows for different tasks and let the Agent select them precisely by name.</sub>
221
+ </div>
127
222
 
128
- - 💬 **In-Chat Image Generation**: Tell your Agent what you want to draw without switching tabs or tools.
129
- - 🖼️ **Native Image Gallery**: Dedicated "Gallery" tab automatically collecting all generated images with keyword search, provider filtering, single-item deletion (with confirmation and persistent tombstones), and quick copy/download.
130
- - 🔍 **Interactive Image Tools**: High-res fullscreen preview, one-click copy to clipboard, local download, and open in new tab.
131
- - 🎨 **Multi-Provider Support**: Supports Google Gemini, OpenAI Images, OpenAI Compatible API, ByteDance Seedream / Volcengine Ark, Aliyun DashScope (Wanx / Qwen-Image), and local ComfyUI workflows.
132
- - 🔑 **BYOK (Bring Your Own Key)**: Uses your own API keys managed securely by DSH credentials service with write-only protection.
133
- - 🖼️ **Durable Session Persistence**: Images integrate with DSH Attachment and conversation lifecycle, preserved across reloads.
134
- - 💾 **Workspace File Output**: By default each generated image is also written as a file into the current session workspace; the tool result carries the absolute file path. Can be disabled or re-pointed in settings.
135
- - ⚙️ **Native Web Settings**: Configure providers, keys, models, and endpoints directly in DSH settings.
223
+ <br />
136
224
 
137
225
  ---
138
226
 
139
- ## 📦 Supported Providers
227
+ ## Provider Support
228
+
229
+ | Provider | Chat generation | Chat editing | Studio | Multi-model comparison |
230
+ | :--- | :---: | :---: | :---: | :---: |
231
+ | **Google Gemini** | ✅ | ✅ Multiple | ✅ | ✅ |
232
+ | **OpenAI Images / Compatible** | ✅ | ✅ Multiple | ✅ | ✅ |
233
+ | **ByteDance Seedream / Volcengine Ark** | ✅ | ✅ Multiple | ✅ | ✅ |
234
+ | **Aliyun DashScope / Qwen Image** | ✅ | ✅ Multiple | ✅ | ✅ |
235
+ | **Local ComfyUI** | ✅ | ✅ Single | — | — |
236
+
237
+ > Studio and multi-model comparison currently support cloud Providers only. Multi-model comparison uses the model configured for each Provider in Settings.
140
238
 
141
- | Provider | Default Model | Default Endpoint / Base URL |
239
+ <details>
240
+ <summary><strong>Current default models and endpoints (all configurable)</strong></summary>
241
+
242
+ | Provider | Default model | Default Endpoint / Base URL |
142
243
  | :--- | :--- | :--- |
143
- | **Google Gemini** | `gemini-3.1-flash-image` | `https://generativelanguage.googleapis.com/v1beta/interactions` |
144
- | **OpenAI Images** | `gpt-image-2` | `https://api.openai.com/v1` |
145
- | **OpenAI Compatible** | Custom | Custom Base URL |
146
- | **ByteDance Seedream / Volcengine Ark** | `doubao-seedream-5-0-260128` | `https://ark.cn-beijing.volces.com/api/v3` |
147
- | **Aliyun DashScope / Wanx** | `wanx2.1-t2i-turbo` | `https://dashscope.aliyuncs.com/api/v1` |
148
- | **Local ComfyUI (text-to-image & image-to-image)** | Imported API Format Workflow | `http://127.0.0.1:8188` |
244
+ | Google Gemini | `gemini-3.1-flash-image` | `https://generativelanguage.googleapis.com/v1beta/interactions` |
245
+ | OpenAI Images | `gpt-image-2` | `https://api.openai.com/v1` |
246
+ | OpenAI Compatible | Custom | Custom Base URL |
247
+ | ByteDance Seedream | `doubao-seedream-5-0-260128` | `https://ark.cn-beijing.volces.com/api/v3` |
248
+ | Aliyun DashScope | `qwen-image-3.0` | `https://dashscope.aliyuncs.com/api/v1` |
249
+ | Local ComfyUI | Imported API Workflow | `http://127.0.0.1:8188` |
250
+
251
+ </details>
252
+
253
+ ---
254
+
255
+ ## Data and Privacy
256
+
257
+ - **BYOK:** API keys are stored through the DSH Credentials service and are never displayed in plaintext on the settings page.
258
+ - **Cloud requests:** The prompt and reference images used for a request are sent to the selected Provider. Follow that Provider's terms of service.
259
+ - **Local ComfyUI:** Requests are sent to the configured ComfyUI address.
260
+ - **Workspace files:** When workspace saving is enabled, chat results are written to disk; Studio saves only the candidates you select.
261
+ - **Gallery and favorites:** Gallery metadata and favorite state are stored in the current browser's local storage.
262
+ - **Inspiration cache:** Example metadata ships with the plugin. Images load on demand and are cached locally, and the cache can be cleared at any time.
263
+
264
+ ## FAQ
265
+
266
+ <details>
267
+ <summary><strong>What should I do if “Image Generation” is missing after installation?</strong></summary>
268
+
269
+ Fully restart the current DSH Profile, then inspect the plugin configuration:
270
+
271
+ ```bash
272
+ dsh --profile web --dump-config
273
+ ```
274
+
275
+ If `dsh-image-gen` is absent from the output, run the installation command again. When filing an issue, include the DSH version, plugin version, and relevant error logs, but never include your API key.
276
+
277
+ </details>
278
+
279
+ <details>
280
+ <summary><strong>Where are generated images saved?</strong></summary>
281
+
282
+ When “Save to workspace” is enabled, chat results are saved to the `dsh-image-gen/` subdirectory of the current workspace by default. You can change this directory in Settings. Studio candidates remain on the temporary canvas until you select which results should enter the gallery and be saved.
283
+
284
+ </details>
285
+
286
+ <details>
287
+ <summary><strong>Why is ComfyUI not available in Studio?</strong></summary>
288
+
289
+ Studio and multi-model comparison currently support four cloud Provider families only. ComfyUI supports text-to-image, single-image editing, and multiple named workflows through Agent chat.
290
+
291
+ </details>
292
+
293
+ <details>
294
+ <summary><strong>Does deleting an item from the gallery remove its chat message?</strong></summary>
295
+
296
+ No. Deleting a gallery record does not modify the original chat message. You may separately choose to remove the corresponding local image file from the workspace. File deletion is normally irreversible, so confirm carefully.
297
+
298
+ </details>
299
+
300
+ <details>
301
+ <summary><strong>How do I upgrade?</strong></summary>
302
+
303
+ ```bash
304
+ pnpm dsh plugin --profile web add dsh-image-gen@latest
305
+ ```
306
+
307
+ Restart the corresponding DSH Profile after upgrading.
308
+
309
+ </details>
149
310
 
150
311
  ---
151
312
 
152
- ## 🛠️ Local Development
313
+ ## Local Development
153
314
 
154
315
  ```bash
155
316
  git clone https://github.com/shanliuling/dsh-image-gen.git
@@ -157,16 +318,21 @@ cd dsh-image-gen
157
318
 
158
319
  pnpm install
159
320
  pnpm run typecheck
160
- pnpm run test
321
+ pnpm test
161
322
  pnpm run build
162
-
163
323
  pnpm run pack:check
164
324
  ```
165
325
 
166
- ---
326
+ Feedback is welcome through [Issues](https://github.com/shanliuling/dsh-image-gen/issues). Read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a Pull Request.
167
327
 
168
- ## 📄 License
328
+ ## License
169
329
 
170
- Open-sourced under the [MIT License](LICENSE).
330
+ This project is open source under the [MIT License](LICENSE).
171
331
 
172
- If this plugin helps you, feel free to give it a ⭐️ **Star**!
332
+ <div align="center">
333
+
334
+ If `dsh-image-gen` improves your workflow, consider giving the project a ⭐ **Star** to support continued maintenance.
335
+
336
+ **[View Releases](https://github.com/shanliuling/dsh-image-gen/releases) · [Open an Issue](https://github.com/shanliuling/dsh-image-gen/issues) · [Contribute](CONTRIBUTING.md)**
337
+
338
+ </div>