Repository navigation
Releases
Releases · alanzhao0128/dsh-image-plugins
v0.3.5
Changes in 0.3.5
- Remove Hardcoded Provider Restriction on
reference_image: Removed the legacy client-side check that rejectedreference_imagewhenprovider !== 'dashscope'. - Full OpenAI-Compatible Image Editing (I2I): In OpenAI flavor,
reference_imageis now automatically encoded as a base64 data URL and passed via theimageparameter toPOST /images/generations, natively matching Alibaba / Qianwen Cloud's OpenAI-compatible image editing specifications. - Robust Endpoint Normalization: Updated
dashscopeRootto strip full service URL paths (such as/api/v1/services/aigc/multimodal-generation/generation), ensuring both short domain roots and full documentation curl URLs work smoothly without duplication.
v0.3.4
Changes in 0.3.4
- Smart Intercept of Model 1024x1024 Boilerplate: When a user configures a custom
defaultSize(e.g. 1920x1080), LLMs frequently emitsize: 1024x1024due to pre-training habits or multi-turn chat history copying. The runtime now detects whether1024x1024was explicitly requested in the prompt (e.g.1024,1:1,square,正方形). If not, it automatically intercepts and applies the user's configureddefaultSize. - E2E Tool Echo: Added
sizeto the tool's result schema and rendered text so that the actual resolution used is clearly reported in the conversation. - Purged 1024 from Schema Description: Removed all mentions of 1024x1024 from parameter description to avoid prompting the model.
v0.3.3
Changes in 0.3.3
- Tool Schema & Prompt Guidance: Updated the
generate_imagetool'ssizeparameter description to explicitly instruct LLMs to omit thesizeparameter unless the user explicitly requested a specific resolution or aspect ratio. - Size Resolution & Fallback: Hardened runtime fallback logic in
generate_imageso thatimage.defaultSize(e.g. 1920x1080) reliably takes effect whensizeis omitted, empty, or set to generic values likedefaultorauto. - Cosmokit Container Unwrapping: Ensured
unwrapConfigis applied consistently to initial configs duringinstallSettingsCompat.
v0.3.2 — fix Schemastery volatile schema nesting and add unwrapConfig
dsh-image-plugins 0.3.2
Fixed
- Schemastery volatile nesting validation: Fix
ValidationError: invalid config: - $.vision.enabled volatile fields require a fixed object path without an enclosing volatile fieldwhen enabling the plugin in DSH desktop (Cordis_resolveConfig). RemovedasVolatilefrom enclosingz.objectnodes (visionandimage), keeping it strictly on leaf scalar fields as required by Schemastery / Cordis. - Volatile reference unwrapping: Added
unwrapConfigto recursively unwrap CosmokitVolatile<T>({ get(): T }) reference containers inresolveConfig,resolveVision, andresolveImage. This ensures all internal logic handles plain JavaScript primitives and prevents empty volatile blocks from falsely evaluating as configured.
Full changelog: v0.3.1...v0.3.2
v0.3.1 — dual-engine settings compatibility (dsh 0.1.5 → 0.2.0)
dsh-image-plugins 0.3.1 — dual-engine settings compatibility
One build now works across the dsh settings rewrite (0.1.5 → 0.1.7 → 0.2.0).
dsh 0.1.7 replaced the settings subsystem: the host dropped SettingsProvider.installSection(), the browser dropped the settingsScope service, and live-editable schema fields must be declared volatile. Against those hosts 0.3.0 crashed on load and its settings panel never rendered. 0.3.1 adapts at runtime instead of pinning a host version.
Fixed
- Host, dsh ≥ 0.1.7 / 0.2.0 — plugin load no longer throws
settings.installSection is not a function. The newinstallSettingsCompatduck-types the host:installSectionon ≤ 0.1.5,SettingsForms.configure({ auto: false })plus anapp-boot/config-reloadlistener on ≥ 0.1.7. - Browser, dsh ≥ 0.1.7 / 0.2.0 — the settings panel no longer hangs.
settingsScopeis gone from the staticinjectlist (declaring a service the host deleted blocks plugin activation entirely); the scope is resolved at runtime fromconfigForms.get('image-plugins'), falling back tosettingsScope.bind({ namespace: 'dsh-image-plugins' })on older hosts. - Schema — every editable field is marked volatile in the form hosts read it (
meta.volatile, via.extra('volatile', true): schemastery 3.18.x ships no.volatile()method). Without it, 0.1.7+ hosts reject a live edit withConfig field "…" is not volatile.
Verified hosts
| Host | Settings path exercised |
|---|---|
| 0.1.5-rc.x | installSection + settingsScope |
| 0.1.7-rc.2 | SettingsForms.configure + configForms |
| 0.2.0-rc.2 | same as 0.1.7 — confirmed by unpacking the host's own @deepseek-ai/dsh-settings, dsh-client-ui-settings, dsh-client-connection and dsh-credentials-local to check configure, meta.volatile, configForms.get, and the /api Fetch route registry |
Changed
peerDependencieswidened to>=0.1.2-rc.1so the 0.1.7+ compatibility pre-check accepts the plugin.- Tests: 73 (was 69). Added
tests/client.test.ts(classic-script evaluation plus both scope-resolution branches) and a 0.1.7SettingsFormsboot test assertingconfigure({ auto: false })and config-reload behaviour.
Notes
- Where the panel persists edits follows the host:
~/.dsh/settings.yamlon ≤ 0.1.5; on ≥ 0.1.7 that global file is retired (archived assettings.yaml.imported) and edits land in the profile'scordis.patch.ymlunder theimage-pluginsentry. Secret values always live in~/.dsh/.credentials.yaml. - Unchanged from 0.3.0: per-capability enable switches for
understand_image/generate_image, and the/api/image-plugin-status/snapshotstatus route.
Full changelog: v0.3.0...v0.3.1