Skip to content

v3.14.0

Choose a tag to compare

@github-actions github-actions released this 14 Aug 07:42
· 39 commits to main since this release
  • dsh: pasting into a text-only model now just works — the paste becomes a file path. The plugin grows a browser half (a hand-written bundle in dsh's client plugin protocol, zero dependencies, loaded automatically under the web profile). A capture-phase listener takes over image pastes before the composer's own intake: the bytes go to the plugin's /modlens/paste route on the dsh web server (loopback-bound, magic-byte checked, 25 MB cap, private 0600 temp file), and the composer receives the file path as plain text — the exact shape Pi, OpenCode, and Claude Code hand their models, and the modlens skill's primary trigger. Image admission never fires because the message carries no image attachment; verified end to end with a native text-only DeepSeek-V4-Flash, whose visible reasoning quoted the modlens skill rule and went for the path. The takeover is conditional: (modlens vision) variants and known vision models keep the native paste flow (thumbnails and all), and pasteToPath: false turns the feature off. The host route rides a scoped ctx.inject(['webServer'], ...), so headless profiles never see any of it.
  • The CLI survives Electron hosts (#25). In the packaged dsh desktop app, process.execPath is the Electron binary, and commander's Electron auto-detection then mis-slices argv so the script path lands as a stray positional (too many arguments for 'analyze'). The CLI now parses argv with explicit node semantics — it is always spawned script-first, whatever binary hosts it — and the plugin's spawns set ELECTRON_RUN_AS_NODE for good measure. Thanks to @hi-fangj for tracing it into commander's _prepareUserArgs.