dsh-draw 0.1.1 → 0.1.3

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/CHANGELOG.md CHANGED
@@ -5,6 +5,29 @@ All notable changes to this project are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.1.3] - 2026-08-23
9
+
10
+ ### Added
11
+
12
+ - Presenter pure-function suite (`tests/present.spec.ts`, 11 tests): `presentDrawResult` and `presentDrawPanel` are pinned directly on their arguments — settled/error/foreign/null-call-head blocks, meta fallbacks, regenerate-args parsing, engine-row projection, and the cooldown flag.
13
+
14
+ ### Changed
15
+
16
+ - `presentDrawPanel` now takes an optional `now` clock (default `Date.now`) so the cooldown flag is a pure function of its inputs and testable without fake timers; the `image_generate` tool surface and the settings tab are unchanged.
17
+
18
+ ### Fixed
19
+
20
+ - The five-language README "Development" section reported a stale `77 tests, 11 suites`; it now matches the actual `107 tests, 16 test files`.
21
+ - `src/version.ts` referenced a non-existent `tests/version.spec.ts`; the comment now names the real tripwire (`tests/session-events.spec.ts`).
22
+
23
+ ## [0.1.2] - 2026-08-22
24
+
25
+ ### Changed
26
+
27
+ - Upgraded every `@deepseek-ai/dsh-*` devDependency to `0.1.1-rc.2` and the `dshWorkshop.compatibility.dshVersions` declaration to `0.1.1-rc.2` (rc.2 compatibility release); peers stay `>=0.1.0-rc.8 <0.2.0` and `@deepseek-ai/cordis` stays `^4.0.1`.
28
+ - Re-verified the rc.2 credential read/write surface (`resolve`/`describe`/`set`/`unset`) and the attachment `saveImage`/`ImageAttachmentRef`/`ImageAttachmentLimits` face; both remain source-compatible, so no plugin code changes were required.
29
+ - The monthly compat workflow now installs and smokes against DeepSeek Harness `0.1.1-rc.2`.
30
+
8
31
  ## [0.1.1] - 2026-08-21
9
32
 
10
33
  ### Changed
package/README.es.md CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  | Superficie | Estado |
26
26
  |---|---|
27
- | Harness | DeepSeek Harness `0.1.0-rc.8` (compatibilidad declarada para `0.1.0-rc.8`) |
27
+ | Harness | DeepSeek Harness `0.1.1-rc.2` (compatibilidad declarada para `0.1.1-rc.2`) |
28
28
  | Node | `^22.19.0 \|\| >=24.0.0` |
29
29
  | Motores | Cualquier endpoint de imágenes compatible con OpenAI; presets para OpenAI Images (`gpt-image-1`) y Zhipu CogView (`cogview-3-flash`) |
30
30
  | Superficies | Herramienta host `image_generate` + tarjeta de resultado web + pestaña de ajustes de Plugins |
@@ -138,8 +138,8 @@ Ejemplo de sobrescritura en el parche de tu perfil:
138
138
  ```sh
139
139
  pnpm install # node ^22.19 || >=24
140
140
  pnpm run typecheck # tsc: src + tests contra el checkout local del harness
141
- pnpm run typecheck:ci # tsc contra las caras publicadas 0.1.0-rc.8 (sin paths)
142
- pnpm test # vitest: 77 tests, 11 suites (transporte guionado, Context/Session/ToolRuntime reales)
141
+ pnpm run typecheck:ci # tsc contra las caras publicadas 0.1.1-rc.2 (sin paths)
142
+ pnpm test # vitest: 107 tests, 16 archivos de prueba (transporte guionado, Context/Session/ToolRuntime reales)
143
143
  pnpm run build # declaraciones tsc + bundles tsdown (lib/)
144
144
  pnpm run verify:self-contained # las especificaciones de dependencias resuelven desde el registry
145
145
  pnpm run verify:artifacts # cara ESM host + manifiesto typert + bundle de navegador + archivos de configuración
package/README.hi.md CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  | सतह | स्थिति |
26
26
  |---|---|
27
- | Harness | DeepSeek Harness `0.1.0-rc.8` (`0.1.0-rc.8` के लिए घोषित संगतता) |
27
+ | Harness | DeepSeek Harness `0.1.1-rc.2` (`0.1.1-rc.2` के लिए घोषित संगतता) |
28
28
  | Node | `^22.19.0 \|\| >=24.0.0` |
29
29
  | इंजन | कोई भी OpenAI-संगत images एंडपॉइंट; OpenAI Images (`gpt-image-1`) और Zhipu CogView (`cogview-3-flash`) प्रीसेट |
30
30
  | सतहें | Host `image_generate` टूल + वेब परिणाम कार्ड + Plugins सेटिंग टैब |
@@ -138,8 +138,8 @@ dsh --profile web --dump-config | grep -A2 'id: dsh-draw'
138
138
  ```sh
139
139
  pnpm install # node ^22.19 || >=24
140
140
  pnpm run typecheck # tsc: src + tests स्थानीय हार्नेस चेकआउट के विरुद्ध
141
- pnpm run typecheck:ci # tsc प्रकाशित 0.1.0-rc.8 फ़ेस के विरुद्ध (बिना paths)
142
- pnpm test # vitest: 77 टेस्ट, 11 सुइट (स्क्रिप्टेड ट्रांसपोर्ट, वास्तविक Context/Session/ToolRuntime)
141
+ pnpm run typecheck:ci # tsc प्रकाशित 0.1.1-rc.2 फ़ेस के विरुद्ध (बिना paths)
142
+ pnpm test # vitest: 107 टेस्ट, 16 टेस्ट फ़ाइलें (स्क्रिप्टेड ट्रांसपोर्ट, वास्तविक Context/Session/ToolRuntime)
143
143
  pnpm run build # tsc घोषणाएँ + tsdown बंडल (lib/)
144
144
  pnpm run verify:self-contained # निर्भरता स्पेक registry से हल होती हैं
145
145
  pnpm run verify:artifacts # host ESM फ़ेस + typert मैनिफ़ेस्ट + ब्राउज़र बंडल + कॉन्फ़िग फ़ाइलें
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  <div align="center">
2
2
 
3
3
  # 🎨 dsh-draw
4
+ [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-draw)
4
5
 
5
6
  **Unified static-image generation routing for DeepSeek Harness.**
6
7
 
@@ -24,7 +25,7 @@
24
25
 
25
26
  | Surface | Status |
26
27
  |---|---|
27
- | Harness | DeepSeek Harness `0.1.0-rc.8` (compat declared for `0.1.0-rc.8`) |
28
+ | Harness | DeepSeek Harness `0.1.1-rc.2` (compat declared for `0.1.1-rc.2`) |
28
29
  | Node | `^22.19.0 \|\| >=24.0.0` |
29
30
  | Engines | Any OpenAI-compatible images endpoint; presets for OpenAI Images (`gpt-image-1`) and Zhipu CogView (`cogview-3-flash`) |
30
31
  | Surfaces | Host `image_generate` tool + web result card + Plugins settings tab |
@@ -138,8 +139,8 @@ Example override in your profile patch:
138
139
  ```sh
139
140
  pnpm install # node ^22.19 || >=24
140
141
  pnpm run typecheck # tsc: src + tests against the local harness checkout
141
- pnpm run typecheck:ci # tsc against the published 0.1.0-rc.8 faces (no paths)
142
- pnpm test # vitest: 77 tests, 11 suites (scripted transport, real Context/Session/ToolRuntime)
142
+ pnpm run typecheck:ci # tsc against the published 0.1.1-rc.2 faces (no paths)
143
+ pnpm test # vitest: 107 tests, 16 test files (scripted transport, real Context/Session/ToolRuntime)
143
144
  pnpm run build # tsc declarations + tsdown bundles (lib/)
144
145
  pnpm run verify:self-contained # dependency specs resolve from the registry
145
146
  pnpm run verify:artifacts # host ESM face + typert manifest + browser bundle + config files
package/README.pt.md CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  | Superfície | Status |
26
26
  |---|---|
27
- | Harness | DeepSeek Harness `0.1.0-rc.8` (compatibilidade declarada para `0.1.0-rc.8`) |
27
+ | Harness | DeepSeek Harness `0.1.1-rc.2` (compatibilidade declarada para `0.1.1-rc.2`) |
28
28
  | Node | `^22.19.0 \|\| >=24.0.0` |
29
29
  | Motores | Qualquer endpoint de imagens compatível com OpenAI; presets para OpenAI Images (`gpt-image-1`) e Zhipu CogView (`cogview-3-flash`) |
30
30
  | Superfícies | Ferramenta host `image_generate` + cartão de resultado web + aba de ajustes de Plugins |
@@ -138,8 +138,8 @@ Exemplo de sobrescrita no patch do seu perfil:
138
138
  ```sh
139
139
  pnpm install # node ^22.19 || >=24
140
140
  pnpm run typecheck # tsc: src + tests contra o checkout local do harness
141
- pnpm run typecheck:ci # tsc contra as faces publicadas 0.1.0-rc.8 (sem paths)
142
- pnpm test # vitest: 77 testes, 11 suítes (transporte roteirizado, Context/Session/ToolRuntime reais)
141
+ pnpm run typecheck:ci # tsc contra as faces publicadas 0.1.1-rc.2 (sem paths)
142
+ pnpm test # vitest: 107 testes, 16 arquivos de teste (transporte roteirizado, Context/Session/ToolRuntime reais)
143
143
  pnpm run build # declarações tsc + bundles tsdown (lib/)
144
144
  pnpm run verify:self-contained # as especificações de dependências resolvem pelo registry
145
145
  pnpm run verify:artifacts # face ESM host + manifesto typert + bundle de navegador + arquivos de configuração
package/README.zh.md CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  | 方面 | 状态 |
26
26
  |---|---|
27
- | Harness | DeepSeek Harness `0.1.0-rc.8`(声明兼容 `0.1.0-rc.8`) |
27
+ | Harness | DeepSeek Harness `0.1.1-rc.2`(声明兼容 `0.1.1-rc.2`) |
28
28
  | Node | `^22.19.0 \|\| >=24.0.0` |
29
29
  | 引擎 | 任意 OpenAI 兼容图像端点;内置 OpenAI Images(`gpt-image-1`)与智谱 CogView(`cogview-3-flash`)预设 |
30
30
  | 界面 | Host `image_generate` 工具 + Web 结果卡片 + Plugins 设置页签 |
@@ -138,8 +138,8 @@ profile patch 中的覆盖示例:
138
138
  ```sh
139
139
  pnpm install # node ^22.19 || >=24
140
140
  pnpm run typecheck # tsc:src + tests,对照本地 harness checkout
141
- pnpm run typecheck:ci # tsc:对照已发布的 0.1.0-rc.8 类型(无 paths)
142
- pnpm test # vitest:77 个测试、11 个套件(scripted 传输、真实 Context/Session/ToolRuntime)
141
+ pnpm run typecheck:ci # tsc:对照已发布的 0.1.1-rc.2 类型(无 paths)
142
+ pnpm test # vitest:107 个测试、16 个测试文件(scripted 传输、真实 Context/Session/ToolRuntime)
143
143
  pnpm run build # tsc 声明 + tsdown 打包(lib/)
144
144
  pnpm run verify:self-contained # 依赖声明全部来自 registry
145
145
  pnpm run verify:artifacts # host ESM 面 + typert manifest + 浏览器包 + 配置文件
package/lib/client.js CHANGED
@@ -54,9 +54,11 @@ window.__ModuleLoader__.load({
54
54
  * Project the panel snapshot onto the settings row model.
55
55
  *
56
56
  * @param snapshot - the `draw/status` wire snapshot.
57
+ * @param now - clock override for the cooldown flag (default {@link Date.now});
58
+ * injected so the presenter stays a pure function of its inputs.
57
59
  * @returns the presented panel model.
58
60
  */
59
- function presentDrawPanel(snapshot) {
61
+ function presentDrawPanel(snapshot, now = Date.now) {
60
62
  return {
61
63
  pluginVersion: snapshot.pluginVersion,
62
64
  engines: snapshot.engines.map((engine) => ({
@@ -70,7 +72,7 @@ window.__ModuleLoader__.load({
70
72
  ...engine.credential.source !== void 0 ? { credentialSource: engine.credential.source } : {},
71
73
  credentialWritable: engine.credential.writable,
72
74
  consecutiveFailures: engine.health.consecutiveFailures,
73
- coolingDown: engine.health.cooldownUntil !== null && engine.health.cooldownUntil > Date.now(),
75
+ coolingDown: engine.health.cooldownUntil !== null && engine.health.cooldownUntil > now(),
74
76
  lastError: engine.health.lastError
75
77
  })),
76
78
  quota: {