Repository navigation
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