Repository navigation
Releases: Harvey-Will/dsh-vision-analysis
Release list
v0.2.1-rc.3
Version aligned with the DeepSeek Harness 0.2.1-rc.3 release (upstream
"wrap-up" cut published 2026-10-23). No code changes — every upstream API
this plugin uses was verified unchanged against the installed 0.2.1-rc.3
runtime.
Changed
- Dev dependencies aligned to
0.2.1-rc.3; dependency/peer ranges extended
with|| >=0.2.1-rc.3. Theengines.dsh: ">=0.1.0-rc.6"declaration
already covers this runtime; the installed gate accepts the plugin across
0.1.7-rc.2→0.2.2-alpha.1(verified against the gate predicate in the
0.2.1-rc.3 runtime). - pnpm overrides (session-projection, storage, dsh-llm dedupe) pinned to
0.2.1-rc.3.
Verified
- Upstream release notes cover three items — plugin browse/create "More"
menus in the sidebars and conversation views, New Session draft recovery,
and DeepSeek API-key model-list sync — none touch plugin APIs. Seventeen of
eighteen plugin-relevant packages are byte-identical to 0.2.1-rc.2; the
only changed package,dsh-client-ui-conversation, adds the
conversation.session.header.views.actionsslot (the More menu) and
draft-adoption options (whenDraftExists) — both additive and unused by
this plugin. Every contract we rely on is unchanged:InputZone,
conversation.input.dock,InputState.attachmentIds, and
resolveDraftAttachmentsverified in place. - 155/155 tests green; tsc 0 errors; client bundle build OK; real profile
composition loads the plugin with zero warnings.
Known limitations
- Unchanged from 0.2.0-rc.1.
v0.2.1-rc.2
Version aligned with the DeepSeek Harness 0.2.1-rc.2 release. No code
changes — every upstream API this plugin uses was verified byte-identical
against the installed 0.2.1-rc.2 runtime.
Changed
- Dev dependencies aligned to
0.2.1-rc.2; dependency/peer ranges extended
with|| >=0.2.1-rc.2. Theengines.dsh: ">=0.1.0-rc.6"declaration from
0.2.1-rc.1 already covers this runtime; the installed gate accepts the
plugin across0.1.7-rc.2→0.2.2-alpha.1(verified against the gate
predicate in the 0.2.1-rc.2 runtime). - pnpm overrides (session-projection, storage, dsh-llm dedupe) pinned to
0.2.1-rc.2.
Verified
- Upstream release notes contain only DeepSeek-V4.1-Flash-1017 model support
and DeepSeek Search/Fetch API integration — no plugin-surface changes. All
sixteen plugin-relevant packages (dsh-settings,dsh-llm,
dsh-attachment,dsh-tools,dsh-client-ui-slots/-renderer/
-locale/-connection/-conversation,dsh-util-values, manifest /
plugin-manager / app-boot / client-modules, api controllers) are
byte-identical to 0.2.1-rc.1. - 155/155 tests green; tsc 0 errors; client bundle build OK; real profile
composition loads the plugin with zero warnings.
Known limitations
- Unchanged from 0.2.0-rc.1.
v0.2.1-rc.1
Version aligned with the DeepSeek Harness 0.2.1-rc.1 release, covering the
seven upstream releases since 0.2.0-rc.2 (0.2.1-alpha.1 … alpha.5,
rc.1, rc.2). One real adaptation: the compatibility gate now prioritizes
engines.dsh; everything else was verified unchanged.
Added
- Declare
engines.dsh: ">=0.1.0-rc.6"inengines. Since0.2.1-alpha.4
the plugin compatibility gate judgesengines.dshalone when declared
(falling back to@deepseek-ai/dsh*peer ranges otherwise), and the
release notes ask plugin authors to declare it. The range expresses the
same supported span as the peer OR-ranges and was verified against the
installed gate predicate: ACCEPT across0.1.0-rc.8→0.3.0, the
no-engines.dshpeer fallback still ACCEPTs, and a deliberately wrong
engines.dshis correctly REJECTed. Peer ranges are kept unchanged for
older gates that only read peers.
Changed
- Dev dependencies aligned to
0.2.1-rc.1(pinned exact — the audited
runtime); dependency/peer ranges extended with|| >=0.2.1-rc.1. - Removed the
@deepseek-ai/dsh-invariantsdev dependency: upstream deleted
the package and every./invariantexport in0.2.1-alpha.1(breaking
change), and this plugin never imported it. The stale host-apiproxy
transitive tree still peer-requires it through a final-only range (the
knownworkspace:^conversion bug), so an override pins its last published
version (0.2.0-rc.2) to keep resolution working. - pnpm overrides (session-projection, storage, dsh-llm dedupe) pinned to
0.2.1-rc.1.
Verified
- API audit across
0.2.0-rc.2→0.2.1-rc.1(against the installed
runtime): zero breaking changes on every surface this plugin uses.
dsh-settings/dsh-attachment/dsh-client-ui-slots/-locale/manifest/
plugin-manager/app-boot/api controllers are byte-identical;dsh-llm
adds adapter-only fields (defaultBaseURL,imageRequestTarget,
ConfigureCall) withMessage/ContentBlock/llm/streamuntouched
(message.tsunchanged);dsh-toolsadds an optionalmetafield;
dsh-client-ui-conversationkeeps theInputZonedock contract,
InputState.attachmentIdsandresolveDraftAttachmentsunchanged
(changes are additive: user-text factory, message-image labels);
renderer/util-values/connection changes are additive. - Upstream breaking notes reviewed and confirmed irrelevant:
./invariant
removal, subpath-plugin metadata moved to subpath exports (this plugin is
a main-entry bundle; manifest schema unchanged), composerstatssplit
intoactivity/usage(unused), tool-presentationbothremoval
(unused). - 155/155 tests green; tsc 0 errors; client bundle build OK; real profile
composition loads the plugin on 0.2.1-rc.1 with zero warnings; gate
matrix verified against the installed predicate (engines.dsh path, peers
fallback, and negative case). 0.2.1-rc.2(published after the audited runtime) changed only DeepSeek
model/search surfaces per its release notes;dsh-settingsis
byte-identical across rc.1/rc.2 and the ranges accept rc.2.
Known limitations
- Unchanged from 0.2.0-rc.1.
v0.2.0-rc.2
Version aligned with the DeepSeek Harness 0.2.0-rc.2 release. No code
changes — every upstream API this plugin uses was verified against the
installed 0.2.0-rc.2 runtime.
Changed
- Dev dependencies aligned to
0.2.0-rc.2; dependency/peer ranges extended
with>=0.2.0-rc.2for strict resolvers. The installed compatibility gate
accepts the plugin across0.1.5-rc.1→0.2.1-alpha.1— verified against
the gate predicate in the 0.2.0-rc.2 runtime. - pnpm overrides (session-projection, storage, dsh-llm dedupe) pinned to
0.2.0-rc.2.
Verified
- Upstream surfaces byte-identical to 0.2.0-rc.1:
dsh-settings,
dsh-attachment,dsh-tools,dsh-client-ui-slots/-locale/
-connection, the api-session/api-settings controllers, and the plugin
loading chain. The 0.2.0-rc.2 deltas are confined to a typert declaration
string indsh-llm(newuser-question-replymessage source for the
experimental async Q&A mode), auseMemorefactor in the slot renderer, and
additive conversation client/locale changes — none touch thellm/stream
waterfall, theInputZonedock contract, or the settings surface. - The pi-ai 0.87.1 model-catalog refresh ("some older model IDs removed")
affects DSH model selection only: the plugin has zero pi-ai coupling and
IMAGE_CAPABLE_MODEL_HINTSstays a deliberately conservative allowlist. - 155/155 tests green; tsc 0 errors; client build OK; real profile
composition loads the plugin on 0.2.0-rc.2 (dsh --dump-config).
Known limitations
- Unchanged from 0.2.0-rc.1.
v0.2.0-rc.1
Version aligned with the DeepSeek Harness 0.2.0-rc.1 release (first 0.2.0
series candidate; no intermediate versions were published after 0.1.7-rc.2).
The API audit against the installed runtime also surfaced two pre-existing
client-face defects (both present on 0.1.7-rc.2 as well, not 0.2.0
regressions), fixed here.
Changed
- Dev dependencies aligned to
0.2.0-rc.1; dependency/peer ranges extended
with>=0.2.0-rc.1. The 0.1.7-rc.1 compatibility gate evaluates
@deepseek-ai/dsh*peer ranges withincludePrerelease, so the previous
ranges already passed on0.2.0-rc.1— verified against the installed gate
predicate — but strict resolver semantics (pnpm/npm) need the explicit
branch to resolve the aligned0.2.0-rc.1packages. - pnpm overrides (session-projection, storage, dsh-llm dedupe) pinned to
0.2.0-rc.1.
Fixed
- The
conversation.input.dockWeb UI hint never rendered: it read
input.imageIds, a field no runtime build publishes (draft attachments live
inInputState.attachmentIds), and itssessionIdprop was never injected,
silently disabling the model-capability check. The entry now follows the
typedInputZoneowner contract ({ session, input }), takes the session id
from the slotinject(sessionId)argument (falling back to owner props for
older builds), and resolves draft attachment kinds (image/file) through
the optionaluiConversationface — degrading to kind-unknown logic when
that service is absent. Visibility rule extracted as the pure, tested
shouldShowInterpretHint(). - The settings change listener subscribed to
settings/updated, an event name
no observed runtime build emits. The Forms service emits
settings/document-updated(verified in 0.1.7-rc.2 and 0.2.0-rc.1); the shim
now subscribes to the real name and keeps the old one as a legacy alias.
Verified
- Upstream surfaces this plugin uses are byte-identical between 0.1.7-rc.2 and
0.2.0-rc.1:dsh-settings(SettingsForms),dsh-llm(llm/stream),
dsh-attachment(attachments.readImage),dsh-tools,dsh-client-ui-slots
/-renderer/-locale/-connection, the api-session/api-settings
controllers,dsh-plugin-manager,dsh-app-boot,dsh-client-modules.
dsh-client-ui-conversationchanges are additive (submission-arbitration
fields); theconversation.input.dockInputZonecontract is unchanged.
dsh-util-valueschanged only an internal realm-intrinsic probe. - 155/155 tests green (130 + 25 new: shim event wiring, dock decision logic,
real-react render tests for the dock incl. regressions, and real-cordis
Context integration — plugin boot, fiber disposal, settings events and
llm/streamimage projection through the real event bus); tsc 0 errors;
client bundle build OK. Live verification on 0.2.0-rc.1: real profile
composition loads the plugin (dsh --dump-config), the installed
compatibility gate accepts the plugin across 0.1.0-rc.8 → 0.2.1-alpha.1,
Config schema auto-discovery emits thevision-analysisform, and the
deployed artifact answered a real vision request (3.6 s) with the full
within-group 429 fallback chain exercised live.
Known limitations
- Unchanged: modalities auto-sync is a no-op on 0.1.7+ profile storage;
_visionBridgedeclarations survive the upstream settings migration.
v0.1.7-rc.2
[0.1.7-rc.2] — 2026-09-24
Version aligned with the DeepSeek Harness 0.1.7-rc.2 release. No code changes
required — every upstream API this plugin uses was verified against the
installed 0.1.7-rc.2 runtime.
Changed
- Dev dependencies aligned to
0.1.7-rc.2; peer/dependency ranges extended with
>=0.1.7-rc.1documenting 0.1.7-rc line support. The plugin-version
compatibility gate introduced in 0.1.7-rc.1 (which checks@deepseek-ai/dsh*
peer ranges against the runtime, prereleases participating) accepts this
plugin on0.1.7-rc.2— verified against the gate's own predicate. - Desktop variant (0.1.7-rc.2): the desktop app embeds the same web frontend —
the plugin's client face (platform: "web") loads there unchanged. No
desktop-specific plugin surface exists in the runtime to adapt to.
Verified
SettingsFormsthird-generation settings path,llm/streamwaterfall,
attachments.readImage, and theconversation.input.dockslot are unchanged
in 0.1.7-rc.2. 130/130 tests green; tsc 0 errors; client build OK.- Upstream since 0.1.7-alpha.1 (alpha.2 / rc.1 / rc.2) touches plugin-adjacent
surfaces we do not use (spill-policytoken budgets,agent/createdevents,
Session sync-history deprecations, PTC renames,readBytesmigration) — none
affect this plugin.
Known limitations
- Unchanged from 0.1.7-alpha.1: modalities auto-sync is a no-op on 0.1.7+
profile storage;_visionBridgedeclarations survive the upstream settings
migration.
v0.1.7-alpha.1
[0.1.7-alpha.1] — 2026-09-22
Version aligned with the DeepSeek Harness 0.1.7-alpha.1 release. Three upstream
breaking changes handled; all plugin features remain functional.
Changed
- Settings API third generation (
SettingsProvider.installSectionremoved
upstream): the compatibility shim now detectsSettingsForms(0.1.7+) and
wires lazy config reading throughdescribe()plus a best-effort
settings/updatedchange listener. Schema registration is automatic (derived
from the plugin'sConfigexport). - Message types (
Message→RequestMessage = Message | RequestUserInput):
bridge helpers now useRequestMessagethroughout. - ContentBlock vocabulary (
tool-resultremoved →tool-call/
tool-addition/tool-removal): image projection recurses into both legacy
tool-resultand newtool-callnested content, keeping the bridge-specific
placeholder format (not the upstreamprojectImagesForTextModeldefault). - Bridge modalities sync degrades gracefully when
settings.yamlis absent
(0.1.7 migrates it into the profile) instead of failing plugin boot. - Dev dependencies aligned to
0.1.7-alpha.1;dsh-code-runtimepinned to
0.1.5-rc.3(not republished in the 0.1.7 line). Peer/dependency ranges
extended with>=0.1.7-alpha.1.
Known limitations
- Modalities auto-sync is a no-op on 0.1.7+ (model config storage moved from
settings.yaml into the profile patch). Existing_visionBridgedeclarations
survive the upstream migration; new bridge models need theirimage
inputModalities configured via the profile until sync is ported. - Session format V4 in 0.1.7 is read-only for this plugin (no session I/O).
v0.1.5-rc.1
[0.1.5-rc.1] — 2026-09-10
Version aligned with the DeepSeek Harness 0.1.5-rc.1 release. API-compatible upgrade from 0.1.2-rc.1 — no plugin code changes required; all upstream APIs used by the plugin (SettingsProvider.installSection, llm/stream waterfall, attachments.readImage, conversation.input.dock slot, ctx.slots.inject/register) are unchanged.
Changed
- Dev dependencies aligned to
0.1.5-rc.1(26 packages updated; 3 stale packages — dsh-client-runtime, dsh-client-web-react, dsh-host-apiproxy — remain at their latest published versions). - Peer/dependency ranges extended with
>=0.1.5-alpha.1to cover the 0.1.5 minor (SemVer prerelease tuple rule). - pnpm-workspace.yaml overrides updated to
0.1.5-rc.1. - Plugin benefits from upstream improvements without code changes: HTTP_PROXY support for vision API calls,
read_imageresults rendered directly in Web tool cards, pi-ai 0.85.1 upgrade (catalog-changed validator fix).
Known limitations
- Session format V3 migration is irreversible — users who upgrade cannot downgrade to 0.1.2-rc.1 session logs.
@deepseek-ai/dsh-client-runtime,@deepseek-ai/dsh-client-web-reactand@deepseek-ai/dsh-host-apiproxywere not republished in the 0.1.5 line; dev-installed copies stay at their latest versions. They resolve only at build time — at runtime the host frontend still serves these module ids.- The image bridge requires per-deployment setup (
bridgeModelsplus animagedeclaration in the model'sinputModalities) and is not zero-config. The modalities auto-sync removes the manual settings.yaml step; a restart is still needed for the running harness to reload the model registry.
v0.1.2-rc.1
[0.1.2-rc.1] — 2026-09-03
Version aligned with the DeepSeek Harness 0.1.2-rc.1 release (installed via the npm alpha → 0.1.2-rc.1 dist-tag).
Added
- Bridge modalities auto-sync: models listed in
bridgeModelsare configured automatically — the plugin addsimageto the model'sinputModalitiesin settings.yaml and marks the entry with_visionBridge: true, so the harness admits image prompts without manual editing. Removing a model frombridgeModels(or deactivating the plugin) reverts every marked entry to its pre-bridge state; native multimodal models are never touched. Edits are surgical (raw-text line patches — the whole file is never rewritten) and every modification is preceded by a timestamped backup. - Multi-endpoint priority groups (F1):
endpoints: [{ baseURL, apiKey, model, fallbackModels? }, …]— additional vision provider groups tried in priority order when the groups before them fail (rate limits, auth errors, endpoint 404/subscription errors, network failures). Each group carries its own key and model ids (ids never cross groups). The stock OVHcloud free group automatically demotes to last-resort fallback once any own group is configured. Chain exhaustion reports every attempt (组N [model @ baseURL]: error); pure rate-limit exhaustion keeps the existing quota notice. Bridge andanalyze_imageboth fail over across groups; a single-group deployment behaves exactly as before. - Client-side composer dock entry, settings section, and
analyze_imagetool all registered through the rc.1 settings/tool APIs (see Changed).
Changed
- Dev dependencies aligned to
0.1.2-rc.1so typecheck and the client-face build run against the same package set the rc.1 host ships. - Peer/dependency ranges verified to accept
0.1.2-rc.1(>=0.1.2-alpha.1branch; SemVer prerelease tuples mean^0.1.1-rc.2alone does NOT match it). - Settings registration runs through the rc.1
SettingsProvider.installSectionmethod with an automatic fallback to the legacy standaloneinstallSettingsSectionfor older hosts; the clientctx.slotsContext merge now loads fromdsh-client-ui-renderer/client, andJsonValuefromdsh-util-values(both moved upstream in rc.1). - Sync hardening (P1): post-write integrity verification with automatic backup rollback (top-level key loss and empty-object corruption both trigger restore), backup retention (5 most recent), and byte-for-byte round-trip fidelity tests over a real-structure settings.yaml benchmark.
Known limitations
@deepseek-ai/dsh-client-runtime,@deepseek-ai/dsh-client-web-reactand
@deepseek-ai/dsh-host-apiproxywere not republished in the0.1.2line;
dev-installed copies stay at their latest versions. They resolve only at
build time — at runtime the host frontend still serves these module ids
(active community plugins declare the same injects).- The image bridge requires per-deployment setup (
bridgeModelsplus an
imagedeclaration in the model'sinputModalities) and is not zero-config.
The modalities auto-sync removes the manual settings.yaml step; a restart is
still needed for the running harness to reload the model registry. - Failover fallback model ids are endpoint-specific and must be adjusted when
pointing away from the default provider (eachendpointsgroup carries its own).
[0.1.2-alpha.5] - 2026-08-28
Version aligned with the DeepSeek Harness dsh-v0.1.2-alpha.5 prerelease line.
Added
- Built-in default vision source: OVHcloud AI Endpoints free anonymous tier (Qwen2.5-VL-72B-Instruct), zero-config on first install.
fallbackModels: rate-limit failover across same-endpoint models (HTTP 429 rotates to the next model; non-429 errors never rotate).VisionRateLimitErrorwith user-facing recovery guidance when every model is limited; the image bridge surfaces it in conversation.- Tool output reports the model that actually answered.
- In-repo
screenshots.jsondeclaration per the awesome-dsh-plugin convention. bugs.urlandauthormetadata inpackage.json.
Changed
- README (en/zh): two clearly separated usage modes (
analyze_imagetool vs. image bridge setup), real OCR/chart/UI demo outputs, unified version references, fixed issue links. - Repository topics widened for discoverability.
Known limitations
- The image bridge requires per-deployment setup (
bridgeModelsplus an
imagedeclaration in the model'sinputModalities) and is not zero-config. - Failover fallback model ids are endpoint-specific and must be adjusted when
pointing away from the default provider.
[0.1.1-rc.2] — 2026-08-22
Added
- Image bridge: route pasted/sent images to the configured vision endpoint for models listed in
bridgeModels(originally text-only models declared image-capable). - Structured output:
chart-data/ocrreturn machine-readabledata(JSON) alongside text, with automatic fallback when the endpoint lacksresponse_formatsupport. - Result caching (
cacheTtlMs,cacheMaxEntries) and retry with exponential backoff (retryCount,retryBackoffMs) on HTTP 429 / transient 5xx. - Bilingual README with demo screenshot; composer hint for image-incapable models.
[0.1.0-rc.8] — 2026-08-21
Added
analyze_imagetool with 8 modes (describe, ocr, ui-review, chart-data, object-detect, compare, code-gen, debug).- OpenAI and Anthropic wire formats; local path / http(s) URL / data URL input; up to 4 images per call.
- Privacy-first design: image bytes never enter the session log or the main model;
debugreport masks API keys entirely.
v0.1.1-rc.2
Adapted and optimized for DeepSeek Harness 0.1.1-rc.2.
Harness rc.2 capabilities leveraged:
- DeepSeek adapter Files API image uploads with file reuse
- Automatic image resizing/format conversion per model requirements
Plugin features: analyze_image tool with 8 analysis modes (describe, OCR, UI review, chart data, object detection, compare, code-gen, endpoint debug), any OpenAI-/Anthropic-compatible vision endpoint, local path / URL / data URL input, up to 4 images per call, live settings UI with masked secrets, composer hint for image-incapable models, native support for the official DeepSeek-V4-Flash-Vision-Exp multimodal model.
Install: dsh plugin --profile web add github:Harvey-Will/dsh-vision-analysis
Tarball install: attached — dsh plugin --profile web add ./dsh-vision-analysis-0.1.1-rc.2.tgz