# Compatibility and verification boundaries
## Verification matrix
| Environment | Status |
|---|---|
| DSH Desktop 0.2.0-rc.2, Windows x64 | Unit-tested and registration-tested locally; install verification pending |
| DSH Desktop 0.2.0-rc.2, macOS (arm64/x64) | Pending first install; macOS system-proxy detection covered by unit tests |
| DSH CLI / headless | Expected to work (same contracts); not yet verified |
This is a personal plugin, not an official DeepSeek product. The matrix above
states exactly what has been exercised; nothing more is claimed.
## No version gate (deliberate)
This package declares **no @deepseek-ai peer dependency at all**.
DSH's compatibility check returns "no incompatibility" immediately when the field
is absent, so nothing about a DSH release can gate this plugin.
That is intentional, because DSH treats an incompatible peer as a hard gate with
three severe outcomes:
- install is rejected (incompatible-version);
- an already-installed bundle outside the range is **skipped entirely** at
startup (loadProfileDirectory moves it into skippedBundles);
- individual rows are **disabled** by the preflight (row.disabled = true).
Any version bound - even a floor - is a guess about a runtime this plugin does
not import. The plugin instead fails loudly and locally:
- apply checks that ctx.tools.register exists and throws
a readable error when it does not;
- the Loader isolates that failure to this entry (fiber failed), so DSH keeps
running and every other plugin is unaffected;
- the failure is visible on the Plugins page, where the entry can be disabled,
rolled back, or the whole bundle uninstalled.
### Minimum runtime, stated as documentation
Tested and developed against DSH Desktop **0.2.0-rc.2**. The plugin requires a
DSH that provides the tools service (ctx.tools) and the bundle
patch contract. Older or newer runtimes are neither gated nor claimed: try it,
and if the contract is missing the error says exactly that.
## Dependency surface (why updates should rarely break this plugin)
- The host entry imports **only Node.js builtins**. No DSH package is imported.
- The only DSH contract used is the documented one every official tool plugin
uses: a cordis plugin module (name / inject /
apply(ctx, config)) plus ctx.tools.register(definition)
with a plain-JSON tool definition.
- If ctx.tools is ever missing, apply throws a readable
error; the Loader isolates the failure to this entry (fiber failed) and DSH
continues normally. The entry can be disabled from the Plugins page.
- User configuration (image-gen.config.json) and credentials live in
the DSH home directory, outside the package. Installing, upgrading, or
reinstalling the bundle never touches them.
## Install, update, and restart behavior
- A **fresh install** applies live: the plugin manager reconciles the profile
patch against the running Loader, so the tools are available on the next turn
without restarting DSH (the UI reports application: applied).
- **Re-installing or upgrading an already-installed dependency** is reported as
restart-required by the plugin manager (that is DSH's rule, not
this plugin's): quit and reopen DSH after an upgrade.
- If the deployment runs without the HMR service, every plugin change is
restart-required.
## Known limitations
- macOS/Windows system proxies that require authentication are not picked up
from OS settings; set an explicit proxy URL (which may include
credentials) in the config file instead.
- Generated images are saved to disk and reported as paths. Inline image
results are deliberately not produced; models that can view images use the
built-in read_image tool on the returned path.