Skip to content

v3.10.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 17:42
· 65 commits to main since this release
  • Pasting into the dsh Web UI now works end to end, thumbnails included. The plugin registers a wrapper provider whose model list carries two entries, DeepSeek-V4-Flash (modlens vision) and DeepSeek-V4-Pro (modlens vision); select one and pastes are admitted, because dsh's image admission asks the selected provider for input modalities and the wrapper declares image input. Conversion happens at request time on the wire messages only: the durable session log and the UI keep the native image blocks (your paste keeps its thumbnail), each pasted attachment is read once through the modlens CLI and cached for every later step, and the wrapped request is answered by the same DeepSeek route it always used. The wrap covers DeepSeek and GLM text models only; their own vision models (deepseek-vl/ocr, janus, glm v-series) are excluded by name pattern and by declared modality, so a model that can already see is never wrapped. The agent/pre-step auto-read from 3.9.0 becomes opt-in (autoRead: true) since request-time conversion owns the paste path and preserves the native UX. Registration also stopped failing silently: the adapter now supplies the base-class methods dsh's duck-typing expects (providerInfo, providerRetryPolicy), whose absence was exactly the invisible failure, and a registration error is logged to the harness console instead of swallowed.
  • Paste auto-read read a field the attachment store never had (#17). dsh's attachments.readImage returns { ref, data }, but the 3.9.1 plugin read stored.bytes and stored.mediaType, so every pasted image degraded to a Buffer.from(undefined) TypeError block. The plugin now reads the real shape (data, with the media type on ref), and a missing byte field fails with a named error pointing at the dsh attachment shape instead of a bare TypeError, so the next developer-preview drift stays legible. Thanks to @nico2656-ui for the rc.6 type archaeology and a verified patch.
  • The README leads its demo gallery with the real dsh paste session (recovered from the machine that ran it), states the wrap scope, and lists both variant names verbatim under a rather more visible first-plugin banner.