dsh-modellix 0.1.1 → 0.2.0

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 (36) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +101 -166
  3. package/README.zh-CN.md +99 -164
  4. package/docs/assets/chat-media-generation-en.webp +0 -0
  5. package/docs/assets/chat-media-generation-zh.webp +0 -0
  6. package/docs/assets/design-results-drawer-en.webp +0 -0
  7. package/docs/assets/design-results-drawer-zh.webp +0 -0
  8. package/docs/assets/llm-model-selector-en.webp +0 -0
  9. package/docs/assets/llm-model-selector-zh.webp +0 -0
  10. package/docs/assets/media-players-en.webp +0 -0
  11. package/docs/assets/media-players-zh.webp +0 -0
  12. package/docs/assets/settings-ready-en.webp +0 -0
  13. package/docs/assets/settings-ready-zh.webp +0 -0
  14. package/docs/assets/web-tools-auto-en.webp +0 -0
  15. package/docs/assets/web-tools-auto-zh.webp +0 -0
  16. package/docs/en-US/LOCAL_USAGE.md +17 -15
  17. package/docs/en-US/RELEASE_CHECKLIST.md +270 -0
  18. package/docs/en-US/USER_GUIDE.md +183 -395
  19. package/docs/zh-CN/LOCAL_USAGE.md +17 -15
  20. package/docs/zh-CN/RELEASE_CHECKLIST.md +270 -0
  21. package/docs/zh-CN/USER_GUIDE.md +182 -394
  22. package/lib/client.d.ts +16 -2
  23. package/lib/client.js +1272 -452
  24. package/lib/client.js.map +1 -1
  25. package/lib/index.d.ts +159 -109
  26. package/lib/index.js +995 -192
  27. package/lib/index.js.map +1 -1
  28. package/package.json +7 -2
  29. package/docs/assets/design-desktop-en.webp +0 -0
  30. package/docs/assets/design-desktop-zh.webp +0 -0
  31. package/docs/assets/design-proposal-en.webp +0 -0
  32. package/docs/assets/design-proposal-zh.webp +0 -0
  33. package/docs/assets/design-results-media-en.webp +0 -0
  34. package/docs/assets/design-results-media-zh.webp +0 -0
  35. package/docs/assets/web-tools-en.webp +0 -0
  36. package/docs/assets/web-tools-zh.webp +0 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,49 @@ The format follows Keep a Changelog.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.2.0] - 2026-08-31
10
+
11
+ ### Added
12
+
13
+ - Added six explicit, namespaced Agent media tools: live model list, live model Schema, natural-language Schema preparation, session/workspace file upload, one-shot generation, and result lookup.
14
+ - Added explicit `modellix_web_search` and `modellix_web_fetch` tools plus Agent routing context so current, external, URL, and source-verification questions can browse automatically without requiring the user to name a tool.
15
+ - Added chat-native media result cards with Preview/JSON tabs, image enlargement, native video/audio players, URL insertion, and downloads.
16
+ - Added the right-side **Modellix Design** session panel with a fixed 360 px desktop content width, full-width narrow behavior, close/focus restoration, a collapsible result list, and independently collapsible result cards.
17
+ - Added background Client job watchers that reconcile submitted cards to terminal state without another Agent result call.
18
+ - Added task ownership by Harness session id, legacy WAL migration compatibility, and per-session result filtering.
19
+ - Added bilingual release/acceptance checklists and twelve new 1920×1080 real-session screenshots covering the current chat-first workflow.
20
+
21
+ ### Changed
22
+
23
+ - Removed the standalone Design tab. Natural-language chat is now the primary media creation and transformation interface.
24
+ - Kept the advanced exact-parameter editor implementation but hid its entry for this release.
25
+ - Moved parameter preparation to the top of the retained advanced editor.
26
+ - Instructed media routing to reuse the latest relevant result URL for edits and transformations, preventing source-dependent requests from falling back to text-to-media.
27
+ - Changed nonterminal assistant wording to acknowledge submission without embedding immutable queued/running/generating status text.
28
+ - Removed routine payment-warning copy from plugin UI flows; account state and usage details remain available in Modellix.
29
+ - Replaced previous Design-page documentation and screenshots with current chat result, drawer, media player, model selector, Settings, and automatic Web examples in separate English and Chinese sessions.
30
+
31
+ ### Fixed
32
+
33
+ - Fixed duplicate media cards when `modellix_media_generate` and the required one-shot `modellix_media_get_result` referenced the same job.
34
+ - Fixed completed jobs remaining visually “Running” in chat by reconciling stored tool output with the live session controller.
35
+ - Fixed background watchers being disposed during layout slot remounts or temporary drawer closure.
36
+ - Fixed cross-session result leakage by persisting and filtering task session ownership.
37
+ - Fixed running and failed cards exposing empty Preview/JSON panels; these tabs now appear only for successful results.
38
+ - Fixed schema parsing compatibility for current Modellix OpenAPI responses and shared-reference layouts while retaining bounded safety limits.
39
+ - Fixed repeated Agent media generation caused by stale nonterminal prose and ambiguous task ownership.
40
+
41
+ ### Security
42
+
43
+ - Kept Credential data write-only and out of media tools, Client state, task WAL records, screenshots, evidence, and diagnostics.
44
+ - Preserved no-automatic-replay behavior for generation and upload submissions with unknown outcomes.
45
+ - Restricted local path uploads to regular, non-symlink files within the active session workspace.
46
+
47
+ ### Verification
48
+
49
+ - Added regression coverage for duplicate-card arbitration, background status convergence, controller retain/release across layout remounts, session isolation, legacy WAL records, explicit Web tools, media uploads, and non-stale Agent routing.
50
+ - Verified real image, image-to-video, audio, DeepSeek Agent, Modellix LLM, automatic Web Search/Fetch, native media playback, bilingual 1920×1080 browser flows, responsive behavior, keyboard interactions, and zero browser Console errors/warnings.
51
+
9
52
  ## [0.1.1] - 2026-08-26
10
53
 
11
54
  ### Fixed
package/README.md CHANGED
@@ -2,36 +2,44 @@
2
2
 
3
3
  # dsh-modellix
4
4
 
5
- A Modellix Profile Bundle for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): one Modellix API Key provides schema-driven Design media generation, a live LLM model catalog, and native Web providers.
5
+ `dsh-modellix` brings Modellix media generation, LLM models, and Web research into [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness). One Modellix API Key enables a chat-first workflow: ask naturally, keep the context in the conversation, and inspect completed work without leaving the session.
6
6
 
7
- > Harness and this plugin currently use prerelease interfaces. Before upgrading Harness, check this package's peer dependencies and [CHANGELOG](CHANGELOG.md).
7
+ > Harness and this plugin currently use prerelease interfaces. Check the peer dependencies and [CHANGELOG](CHANGELOG.md) before upgrading Harness.
8
8
 
9
- ![English Modellix Design desktop layout in a real Harness session, with model and parameters on the left and results on the right](docs/assets/design-desktop-en.webp)
9
+ ![A real English Harness conversation showing a completed Modellix image result](docs/assets/chat-media-generation-en.webp)
10
10
 
11
- ## Feature overview
11
+ ## What changed in 0.2.0
12
12
 
13
- | Feature | User experience | Actual behavior |
14
- | --- | --- | --- |
15
- | Design | Select a model, enter a prompt, and adjust parameters on the left; review tasks and results on the right | Reads the live image, video, and audio catalog and each model's public Schema; submits a billed generation only once |
16
- | LLM | Quickly switch Modellix models in the Harness model selector | Merges the live catalog into the Harness `llm-pi-ai` Modellix provider |
17
- | Web | Use the native Harness `web_search` and `web_fetch` tools | Registers Modellix Search/Fetch providers without creating duplicate custom tools |
13
+ - Removed the standalone Design tab. Chat is now the primary media workflow.
14
+ - Added six explicit Agent tools for media catalog, Schema, parameter preparation, uploads, generation, and result lookup.
15
+ - Added explicit Modellix Web Search and Fetch tools so the Agent can use them automatically when current or source-backed information is needed.
16
+ - Added **Modellix Design** as a right-side session panel. It is 360 px wide on desktop, full-width on narrow screens, and does not squeeze its internal content during opening or closing.
17
+ - Added live chat result cards. A submitted card updates in place when the background task finishes; the one-shot result lookup does not create a duplicate card.
18
+ - Added session-scoped result history, collapsible result lists and cards, image enlargement, native video/audio players, **Add URL to chat**, and **Download**.
19
+ - Kept the exact-parameter editor internally, but its entry is intentionally hidden in this release while the chat-first experience is finalized.
20
+ - Removed routine payment prompts from the UI. A configured Modellix Key already establishes the expected usage model; consumption and details remain available in Modellix.
21
+
22
+ ## Capabilities
18
23
 
19
- The first-run dialog contains an API Key field and Design, LLM, and Web switches. All three switches are on by default and can later be disabled independently in Modellix settings.
24
+ | Area | User experience | Registered capability |
25
+ | --- | --- | --- |
26
+ | Media | Ask the Agent to create, edit, animate, or narrate media | `modellix_media_list`, `modellix_media_schema`, `modellix_media_prepare`, `modellix_media_upload_file`, `modellix_media_generate`, `modellix_media_get_result` |
27
+ | Results | Review media in chat or in the right-side session panel | Live status reconciliation, Preview/JSON for successful jobs, image/video/audio presentation, URL insertion, download |
28
+ | LLM | Select live Modellix models from the Harness model selector | Modellix OpenAI-compatible provider with a live catalog and provider retries set to `0` |
29
+ | Web | Ask a current, external, URL, or source-verification question normally | `modellix_web_search` and `modellix_web_fetch`, selected automatically by Agent routing instructions |
20
30
 
21
31
  ## Requirements
22
32
 
23
33
  - DeepSeek Harness `0.1.1-rc.2`
24
34
  - Published-package runtime: Node.js `^22.19.0 || >=24.0.0`
25
- - Source development and release verification: Node.js `24.18.1` and pnpm `11.24.0` (see `.nvmrc` and `packageManager`)
35
+ - Source development and release verification: Node.js `24.18.1`, pnpm `11.24.0`
26
36
  - A valid [Modellix API Key](https://docs.modellix.ai/get-started)
27
37
 
28
- `dsh-modellix` contains its own Harness integration. It neither installs nor invokes `modellix-cli` at runtime.
38
+ The plugin contains its own Harness integration. It does not install or invoke `modellix-cli` at runtime.
29
39
 
30
40
  ## Installation
31
41
 
32
- For a Windows-first walkthrough from this source checkout, see [Using dsh-modellix locally](docs/en-US/LOCAL_USAGE.md) or its [Chinese edition](docs/zh-CN/LOCAL_USAGE.md).
33
-
34
- Install the published package into the target Web profile, inspect the merged configuration, then start or restart that profile:
42
+ Install the package in the target Web profile, inspect the merged configuration, and start or restart that profile:
35
43
 
36
44
  ```sh
37
45
  dsh plugin --profile web add dsh-modellix
@@ -39,223 +47,150 @@ dsh --profile web --dump-config
39
47
  dsh --profile web
40
48
  ```
41
49
 
42
- `--dump-config` should show the `dsh-modellix` Bundle layer and a plugin row whose id is `modellix`. Replace `web` if you use a different profile.
50
+ `--dump-config` should contain the `dsh-modellix` Bundle layer and a plugin row with id `modellix`. Replace `web` if you use another profile.
43
51
 
44
- You can also build a tarball from trusted source and install the artifact:
52
+ To install a trusted local build:
45
53
 
46
54
  ```sh
47
55
  pnpm install --frozen-lockfile
48
56
  pnpm run verify:release:static
49
57
  pnpm pack
50
- dsh plugin --profile web add ./dsh-modellix-0.1.1.tgz
58
+ dsh plugin --profile web add ./dsh-modellix-0.2.0.tgz
51
59
  ```
52
60
 
53
- Installing TypeScript source directly from Git requires the installation phase to produce `lib/`. Until the package provides a verified `prepare` flow, use the published package or a local tarball.
61
+ See [local usage](docs/en-US/LOCAL_USAGE.md) for the complete Windows-first workflow.
54
62
 
55
- ## First-time setup
63
+ ## Configure the API Key
56
64
 
57
- 1. Open the Harness Web UI and wait for the “Connect Modellix” dialog.
58
- 2. Enter the API Key and confirm whether the three default-on Design, LLM, and Web switches match your needs.
59
- 3. Select “Save and enable.” After a successful save, the browser never displays the Key again; it only shows Credential status and source.
60
- 4. Select “Configure later” if you are not ready. This does not mark the plugin as usable; the next explicit use of an enabled Modellix capability that needs a Credential requests it again.
65
+ On first use, enter the Key in **Connect Modellix**, keep the required services enabled, and select **Save and enable**. The saved Credential is write-only: the Client receives only configuration status and source, never the stored Key.
61
66
 
62
- The API Key can come from either source:
67
+ Alternatively, provide `MODELLIX_API_KEY` to the Harness launch environment. Environment Credentials are read-only in the UI and require a Harness restart after replacement.
63
68
 
64
- - Enter it during first-time setup or in settings, where the Harness Credential service stores it.
65
- - Supply `MODELLIX_API_KEY` in the Harness launch environment. An environment-sourced Key is read-only in the UI; restart Harness after updating it.
69
+ Do not put a real Key in a repository, command argument, URL, browser storage, log, screenshot, HAR, recording, or test snapshot.
66
70
 
67
- Never put a real Key in a repository, command argument, log, screenshot, HAR, recording, or test snapshot.
71
+ ## Chat-first media workflow
68
72
 
69
- See the [user guide: first-time setup and Credentials](docs/en-US/USER_GUIDE.md#first-time-setup) for the complete flow.
73
+ Describe the outcome, not the tool sequence. For example:
70
74
 
71
- ## Quick use
75
+ > Create a polished 16:9 architectural hero image of a glass botanical research pavilion floating above a dawn cloud sea, with restrained lapis-blue and warm-gold tones, realistic premium materials, no people, no text, and no watermark.
72
76
 
73
- ### Design: generate images, video, or audio
77
+ The Agent can then:
74
78
 
75
- 1. Open the **Design** view in Harness.
76
- 2. Search, filter by output type, and select a model. The plugin first restores the most recently selected available model; otherwise it chooses a preferred available model from the current catalog.
77
- 3. Enter the primary prompt. Many models need only a prompt; all other fields come from the model's current `api_schema`, including public defaults.
78
- 4. For exact control, edit enum, switch, numeric, text, or JSON parameters directly. Values that violate the Schema prevent submission.
79
- 5. To adjust parameters in natural language, describe the change under “Adjust parameters by chat.” This uses the same Key with the fixed `openai/gpt-5.6-luna` model and may incur LLM usage. It produces a reviewable diff and never starts media generation by itself.
80
- 6. Review parameters and the billing notice, then select “Confirm and generate” once. The billed POST is never retried automatically; read-only task status checks use only bounded safe retries.
81
- 7. The right results pane groups records as Running, Succeeded, or Diagnostics and supports enlarged images, video/audio playback, and safe downloads.
79
+ 1. Search the live media catalog if a compatible model is not already known.
80
+ 2. Read that model's live API Schema and use only published fields and values.
81
+ 3. Reuse the latest relevant result URL for edit, image-to-video, or video-to-video requests instead of silently switching back to text-to-media.
82
+ 4. Upload a local or conversation file when the selected Schema requires a public media URL.
83
+ 5. Submit the generation exactly once. An unknown submission outcome is never replayed automatically.
84
+ 6. Check once in the Agent turn. A background watcher then updates the existing card to its terminal state without another Agent tool call.
82
85
 
83
- For example, select an available image model whose live Schema exposes `quality` and `size`, then enter this acceptance prompt:
86
+ While a task is nonterminal, immutable assistant prose only confirms acceptance and points to the live result card and Modellix Design. It does not leave behind a stale “running” sentence.
84
87
 
85
- > A premium editorial architectural photograph of a quiet cliffside library above a misty alpine lake at blue hour, carved pale stone arches, warm amber reading lamps, one thoughtful reader, subtle greenery, natural reflections, cinematic but realistic lighting, restrained navy and ivory palette, precise composition, no text, no logo.
88
+ ### Result behavior
86
89
 
87
- This is the exact prompt used for the documented real-API image, not a placeholder. The screenshot below was captured after the task completed in the real Design results list.
90
+ - **Running and failed:** show a concise header/status only; Preview and JSON are not offered without a successful result.
91
+ - **Succeeded:** show Preview and JSON tabs. Images enlarge in a focus-managed dialog; video and audio use native players.
92
+ - **One task, one card:** a `generate` card takes ownership of its task; the corresponding `get_result` call does not render a second copy.
93
+ - **Session isolation:** the right panel shows only tasks owned by the current Harness conversation. Legacy records without a session owner are not injected into new sessions.
94
+ - **Actions:** **Add URL to chat** appends the selected resource URL to the composer; **Download** opens the upstream resource safely.
95
+ - **Expiry:** the displayed expiry follows the upstream result. If none is provided, the plugin applies a seven-day local display limit; it does not extend the upstream URL or keep a permanent media copy.
88
96
 
89
- Set `quality` to `high` and `size` to `1536x1024`, leaving other fields at the model's current defaults. You can edit those controls directly or ask the parameter assistant to propose the two changes, then review and apply the diff. The proposal may incur LLM usage but does not generate an image. Only the final “Confirm and generate” action starts the billed media request, and the plugin does not retry it automatically. If the selected model does not advertise either field, do not add it manually—choose values and fields from that model's live Schema.
97
+ ![The English Modellix Design right-side panel showing three session-scoped results](docs/assets/design-results-drawer-en.webp)
90
98
 
91
- Results remain accessible only while the upstream resource is valid. If the upstream response has no expiry, the plugin uses a seven-day local display limit. This does not extend the upstream URL or copy media into permanent local storage.
99
+ ![The real generated video playing in chat while the session result panel remains available](docs/assets/media-players-en.webp)
92
100
 
93
- ### LLM: switch models quickly
101
+ ## Modellix Design panel
94
102
 
95
- 1. Keep LLM enabled and configure a valid Key.
96
- 2. In Modellix settings, inspect catalog status, model count, and last refresh time; refresh manually when needed.
97
- 3. Select a model under the Modellix provider in the Harness model selector. The choice applies to the next model call.
103
+ The **Modellix Design** button sits at the far right of the conversation header, beside **Session log**. It opens a split-panel experience on large screens and a full-width overlay on narrow screens.
98
104
 
99
- LLM uses the OpenAI Completions-compatible endpoint `https://llm.modellix.ai/v1`. The plugin sets provider retries to `0` to avoid repeating model calls at the plugin layer; it never fabricates a static model list when the catalog is unavailable.
105
+ - The entire Results list is expanded by default and can be collapsed.
106
+ - Every result card is expanded by default and can be collapsed by selecting its header.
107
+ - The close button returns focus to the launcher.
108
+ - The advanced exact-parameter editor remains implemented but its entry is hidden in `0.2.0`; ordinary users work through chat.
109
+ - At 560 px and below, the panel uses the available viewport width. At 360 px and below, the launcher becomes a reachable compact control.
100
110
 
101
- ### Web: search and fetch
111
+ ## LLM models
102
112
 
103
- When Web is enabled and a Key is available, ask Harness to search the public Web and, when needed, fetch a selected result. The native `web_search` and `web_fetch` tools run through the Modellix provider; the plugin does not add a duplicate Tool UI. The provider is unavailable when Web is disabled or no valid Key exists. Web requests may incur Modellix usage and are not automatically retried by the provider. If a paid Fetch outcome is unknown, inspect the Harness transcript or Modellix-side record before repeating it manually.
113
+ When LLM is enabled, the plugin reads the live Modellix catalog and adds those models to the Harness model selector. It does not fabricate fallback entries when the catalog is unavailable. Refresh status and model count are available in Modellix settings.
104
114
 
105
- ## Settings, states, and recovery
115
+ ![The live Modellix model catalog in the English Harness selector](docs/assets/llm-model-selector-en.webp)
106
116
 
107
- The Modellix settings page provides:
117
+ ## Automatic Web Search and Fetch
108
118
 
109
- - Credential configuration, source, and verification status, plus replacement and removal for a local writable Credential;
110
- - independent Design, LLM, and Web switches;
111
- - LLM catalog health, model count, last refresh time, and manual refresh.
119
+ Users do not need to name a tool. For current, changing, external, or source-verification questions, the Agent is instructed to use `modellix_web_search`. When the user provides a public URL or a search result needs full-page reading, it uses `modellix_web_fetch`.
112
120
 
113
- Only an explicit HTTP 401 marks the current Credential invalid and opens recovery. A 402, 429, network failure, or 5xx is not reported as an invalid Key. If an environment-sourced Key is invalid, update `MODELLIX_API_KEY` in the launch environment and restart Harness; the UI cannot override it.
121
+ The explicit Modellix tools and the native Harness providers share the same underlying service, but the routing instruction prevents both tool families from being called for the same operation. Failed or unknown Web requests are not repeated automatically.
114
122
 
115
- Recovery is coordinated across plugin dialogs: concurrent 401 responses produce one Credential dialog. An already-open local Key editor upgrades in place; if an ordinary removal confirmation or image viewer is open, recovery waits until it closes instead of stacking another modal. Save a replacement Key and retry the intended capability. For an environment-sourced Key, update it outside the UI and restart Harness.
123
+ ![A real English Agent turn automatically using Modellix Search and Fetch](docs/assets/web-tools-auto-en.webp)
116
124
 
117
- If a disconnected billed submission has an unknown outcome, Design shows “Submission outcome unknown.” Check Results or the Modellix-side record before any manual resubmission to avoid duplicate charges.
125
+ ## Settings and recovery
118
126
 
119
- ## Accessibility and responsive behavior
127
+ The Modellix settings section shows:
120
128
 
121
- - Dialogs explicitly manage initial focus, `Tab` / `Shift+Tab` wrapping, background inertness, and focus restoration after closing.
122
- - A mandatory Credential gate cannot close implicitly through Escape or the backdrop, but always has a visible “Configure later” action. Ordinary confirmation dialogs support Escape.
123
- - Fields have visible labels, linked errors, busy states, and live status announcements; state is not conveyed by color alone.
124
- - Design uses a left-workspace/right-results layout when its container is wider than `992px`; narrower host slots stack into one column, with a viewport fallback at `768px`. The implementation targets `320px`, 200% text zoom, light/dark themes, forced colors, 48px coarse-pointer targets, and reduced motion.
125
- - UI text follows the current Harness locale. `README.md` is the default English entry, with a complete Chinese edition alongside it.
129
+ - Credential configured/verification status and source;
130
+ - replacement and removal actions for a writable local Credential;
131
+ - independent Design, LLM, and Web switches;
132
+ - live LLM catalog health, count, refresh time, and manual refresh.
126
133
 
127
- ## Uninstallation
134
+ Only HTTP 401 marks a Credential invalid. HTTP 402, 429, network failures, and 5xx retain their own recovery states. Concurrent 401 responses are coalesced into one Credential dialog.
128
135
 
129
- If the Key is stored in a local writable Credential, remove it from Modellix settings first. Revoke an environment-sourced Key in the external launch environment or secret manager. Then remove the plugin from the target profile and restart it:
136
+ ![English Modellix settings with a configured write-only Credential and live catalog](docs/assets/settings-ready-en.webp)
130
137
 
131
- ```sh
132
- dsh plugin --profile web remove dsh-modellix
133
- dsh --profile web --dump-config
134
- dsh --profile web
135
- ```
138
+ ## Accessibility and responsive behavior
136
139
 
137
- Uninstalling the plugin does not promise to remove external environment variables, upstream tasks, or every piece of persisted Harness data. Handle each system separately if your policy requires cleanup.
140
+ - Dialogs manage initial focus, Tab/Shift+Tab wrapping, background inertness, Escape behavior where allowed, and focus restoration.
141
+ - Result tabs support standard keyboard navigation; result/status changes use polite live regions.
142
+ - State is conveyed with text in addition to color.
143
+ - Layouts were checked at 320, 560, 768, and 1440 CSS px, at 200% text scaling, in light and dark themes, forced colors, coarse pointer, and reduced motion.
144
+ - Narrow layouts preserve every result action without horizontal page overflow.
138
145
 
139
- ## UI previews and safe screenshots
146
+ ## Documentation
140
147
 
141
- - [完整中文用户指南](docs/zh-CN/USER_GUIDE.md)
142
148
  - [Complete English user guide](docs/en-US/USER_GUIDE.md)
143
- - [Chinese README](README.zh-CN.md)
144
-
145
- The repository includes six English full-screen screenshots captured from a real configured Harness session. The Chinese guide uses a separate six-image Chinese set of the same workflows. The captures use the live Modellix catalog, a real Schema-constrained parameter proposal, one completed `gpt-image-2` result, a real Modellix LLM turn, and real native Web Search/Fetch. None contains an API Key, Network request details, HAR, or Credential file:
146
-
147
- | Suggested file | Alt text |
148
- | --- | --- |
149
- | `docs/assets/settings-ready-en.webp` | English Modellix settings with a verified local Credential, all three feature switches, and 26 live LLM models |
150
- | `docs/assets/design-desktop-en.webp` | English Modellix Design two-pane desktop workspace using the live `gpt-image-2` Schema |
151
- | `docs/assets/design-proposal-en.webp` | English real parameter proposal with Schema-valid before/after values and explicit Reject/Apply actions |
152
- | `docs/assets/design-results-media-en.webp` | English result pane with the real 1536×1024 image, expiry, enlargement, and download actions |
153
- | `docs/assets/llm-model-selector-en.webp` | English Harness model selector populated from the live Modellix LLM catalog |
154
- | `docs/assets/web-tools-en.webp` | English Harness chrome showing real Modellix Search and Fetch results for public official documentation |
155
-
156
- The Credential is shown only as a write-only configured status. Never open the Key editor, Network, HAR, Console, Credential files, Cookies, or request details while capturing a real session.
157
-
158
- ## Current limitations
149
+ - [English release and acceptance checklist](docs/en-US/RELEASE_CHECKLIST.md)
150
+ - [完整中文用户指南](docs/zh-CN/USER_GUIDE.md)
151
+ - [中文发布与验收清单](docs/zh-CN/RELEASE_CHECKLIST.md)
152
+ - [Local source usage](docs/en-US/LOCAL_USAGE.md)
159
153
 
160
- - The Design parameter assistant is constrained by the current Schema; it is not an open-ended agent.
161
- - There is no upstream cancellation call, and the UI has no task cancellation button.
162
- - The results pane persists task metadata and upstream resource URLs, not the API Key, prompt, or media copies.
163
- - A complex Schema with a blocking unsupported constraint disables submission instead of guessing parameter meaning.
164
- - LLM materializes only models advertised by the live catalog and does not provide fabricated fallback models.
154
+ The repository contains six English and six Chinese 1920×1080 screenshots captured from separate real-language sessions. They cover settings, chat image generation, the result drawer, media players, live LLM models, and automatic Search/Fetch. No capture contains a Key, request header, Network/HAR data, Credential file, or browser storage.
165
155
 
166
- ## Development and verification
156
+ ## Development and release verification
167
157
 
168
158
  ```sh
169
159
  pnpm install --frozen-lockfile
170
- pnpm run verify:env
171
- pnpm run typecheck
172
- pnpm run lint
173
- pnpm run test
174
- pnpm run build
160
+ pnpm run check
175
161
  pnpm run verify:pack
176
162
  pnpm run verify:fresh-install
177
163
  pnpm run verify:node22-install
178
164
  pnpm run verify:release:static
179
165
  ```
180
166
 
181
- `pnpm run check` runs environment verification, type checking, lint, the complete unit/contract suite, global hard coverage thresholds, and file-specific regression floors for the Host runtime and Design parameter planner. `verify:pack` checks the exact artifact allowlist, bilingual documentation, twelve locale-specific metadata-free WebP screenshots by actually decoding them, entries, embedded Source Map source, and sensitive-file exclusions. `verify:fresh-install` installs the final tarball in a temporary project, loads Host, executes the Client factory, checks subpath exports, and compiles consumer type smokes. `verify:node22-install` repeats the tarball runtime smoke with an explicitly configured or NVM-discovered Node.js `^22.19.0` binary and fails instead of silently skipping when none exists. `pnpm run verify:release:static` chains these static gates with the production dependency audit.
182
-
183
- ### Complete release evidence gate
184
-
185
- Use `pnpm run verify:release` for an actual release. First commit the final code, documentation, and screenshots and keep the worktree clean. Create two Secret-free JSON files outside the repository. Each must be smaller than 32 KiB, target the current package version and lowercase 40-character HEAD, and use a canonical UTC ISO-8601 `completedAt` no more than 72 hours old. Browser evidence must contain every fixed check below:
186
-
187
- ```json
188
- {
189
- "version": 1,
190
- "kind": "browser",
191
- "status": "passed",
192
- "package": { "name": "dsh-modellix", "version": "0.1.1" },
193
- "commit": "<current-40-character-lowercase-git-head>",
194
- "completedAt": "<canonical-utc-iso-8601>",
195
- "checks": {
196
- "onboarding": "passed",
197
- "settings": "passed",
198
- "design": "passed",
199
- "llm": "passed",
200
- "web": "passed",
201
- "401": "passed",
202
- "a11y": "passed",
203
- "theme": "passed",
204
- "viewports": "passed"
205
- }
206
- }
207
- ```
167
+ `pnpm run verify:release` additionally requires fresh Secret-free browser and real API/Agent evidence bound to the exact package version and 40-character Git commit. The complete procedure is documented in [RELEASE_CHECKLIST.md](docs/en-US/RELEASE_CHECKLIST.md).
208
168
 
209
- Real API/Agent evidence must cover catalogs, parameter planning, all three media types, the LLM Agent, and Web. `billedCallsExplicitlyAuthorized` attests only that the operator explicitly authorized this run's billed calls; never put a Key, request header, or any other Secret in evidence:
210
-
211
- ```json
212
- {
213
- "version": 1,
214
- "kind": "api-agent",
215
- "status": "passed",
216
- "package": { "name": "dsh-modellix", "version": "0.1.1" },
217
- "commit": "<current-40-character-lowercase-git-head>",
218
- "completedAt": "<canonical-utc-iso-8601>",
219
- "checks": {
220
- "catalogs": "passed",
221
- "planner": "passed",
222
- "image": "passed",
223
- "video": "passed",
224
- "audio": "passed",
225
- "llm-agent": "passed",
226
- "web": "passed"
227
- },
228
- "billedCallsExplicitlyAuthorized": true
229
- }
230
- ```
231
-
232
- To produce this evidence from live services, first complete and verify one Modellix-backed DSH Agent turn in an isolated Web profile. Then let the acceptance process supply `MODELLIX_API_KEY` directly from a controlled environment, file, or Credential and run `pnpm run test:real:modellix` with these non-secret controls:
169
+ ## Current limitations
233
170
 
234
- ```powershell
235
- $env:MODELLIX_ALLOW_BILLED_E2E = '1'
236
- $env:MODELLIX_REAL_AGENT_ATTESTED = '1'
237
- $env:MODELLIX_REAL_E2E_OUTPUT_DIR = 'D:\outside-repo\modellix-real-results'
238
- $env:MODELLIX_API_AGENT_E2E_EVIDENCE_FILE = 'D:\outside-repo\api-agent-evidence.json'
239
- pnpm run test:real:modellix
240
- ```
171
+ - The advanced exact-parameter editor entry is intentionally hidden in this release.
172
+ - Upstream generation cancellation is not exposed.
173
+ - Result history stores task metadata and upstream URLs, not permanent media copies.
174
+ - A complex unsupported Schema blocks submission instead of guessing or dropping constraints.
175
+ - The Modellix LLM catalog has no fabricated offline fallback.
241
176
 
242
- The runner performs live authenticated catalogs and Schema planning, submits exactly one billed image, video, and audio POST, polls those tasks with bounded reads, executes real Web Search/Fetch, saves all media outside the repository for independent decoding checks, and writes Secret-free evidence. It refuses to run without both explicit billing authorization and the prior Agent attestation. It never supplies or accepts a Key as a command argument.
177
+ ## Uninstallation
243
178
 
244
- Supply both absolute paths and run the gate. Paths may be environment variables; the API Key must not be:
179
+ Remove a locally stored Credential from Modellix settings first, or revoke an environment Credential in its external secret manager. Then remove the plugin and restart the profile:
245
180
 
246
181
  ```sh
247
- MODELLIX_BROWSER_EVIDENCE_FILE=/absolute/path/browser-evidence.json \
248
- MODELLIX_API_AGENT_E2E_EVIDENCE_FILE=/absolute/path/api-agent-evidence.json \
249
- pnpm run verify:release
182
+ dsh plugin --profile web remove dsh-modellix
183
+ dsh --profile web --dump-config
184
+ dsh --profile web
250
185
  ```
251
186
 
252
- Evidence is a strictly shaped acceptance attestation; it does not execute or retry billed calls. The gate fails for a missing, failed, or unknown check, unknown field, in-repository or stale file, package/commit mismatch, or dirty worktree.
187
+ Uninstallation does not remove upstream Modellix tasks, external environment variables, or all Harness profile data.
253
188
 
254
189
  ## References
255
190
 
256
191
  - [Modellix getting started](https://docs.modellix.ai/get-started)
257
192
  - [Modellix LLM overview](https://docs.modellix.ai/llm/overview)
258
- - [Modellix GPT Image 2 example](https://www.modellix.ai/zh_CN/models/openai/gpt-image-2)
193
+ - [Modellix model catalog](https://www.modellix.ai/models)
259
194
  - [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)
260
195
 
261
196
  ## License