Repository navigation
Releases
v0.1.2
Metadata only — no runtime code changed since v0.1.1.
Adds the two compatibility declarations a fixed-source catalog gate reads:
engines.node: ">=20", backed by CI now covering node 20 / 22 / 24 (all green) rather than asserted from reading the code.dsh.compatibility.dshReleasesmarking 0.2.0-rc.2 compatible — the one release this plugin has actually been booted against, with its bundle scanned, served byte-identical, and exercised. Other releases are left undeclared, which the gate reads asunknown; declaring them would be inventing evidence.
dsh.compatibility is not a DSH field: the official DshManifest knows only manifestVersion, bundle, profile, and client, and every reader uses optional chaining, so upstream ignores this key. It exists for the dsh.store catalog.
Install
dsh plugin --profile web add dsh-folder-attachnpm latest is now 0.1.2, byte-identical to this tag.
Carries the v0.1.1 fix: mixed folder+image drops are pre-checked against the composer's own imageLimits projection instead of skipping straight to upload.
v0.1.1
Fixes the one known flaw in the folder drag/paste path.
What was wrong
A mixed drop (one folder + some images) took the folder as an @mention and handed the remaining files straight to createDrafts — skipping the client-side image pre-check the shipped intakeFiles runs. Nothing actually slipped through: the Host's validateImageBatch still refused an over-cap batch. But you got a late wire error instead of the composer's own "at most 20 images" message.
What changed
The pre-check is now mirrored for dropped batches, reading thresholds from the imageLimits projection — the same source the composer reads — rather than copying the defaults, and formatting sizes through the exported fileSizeText.
Two deliberate scope limits, both documented in the README:
- It counts only the images in that drop. Already-attached images are not readable through any public face, so the notice can be looser than the composer's. The Host remains the authority on the per-message total.
- Absent limits mean "cannot judge", not "unlimited": the drop proceeds and the Host decides, instead of the plugin silently blocking a valid batch.
useProjection is called through a fallback, so a renamed seam degrades to "no pre-check" rather than throwing and taking the whole entry down.
Guarded by a mutation-checked regression test: removing the check fails the suite.
Install
dsh plugin --profile web add github:sixzjd/dsh-folder-attach#v0.1.1npm
0.1.1is pending — the publish token lacks write access.dsh plugin --profile web add dsh-folder-attachstill resolves to0.1.0.
v0.1.0
Add folder references to the DeepSeek Harness web composer.
What you get
- "Add folder" button left of the composer — opens the OS folder dialog on your machine and inserts
@dir/ /folderslash command — same action- Drag or paste a folder — resolved by name through the same index that backs the
@completion menu
Install
dsh plugin --profile web add github:sixzjd/dsh-folder-attachThen reload the browser page.
Why this exists
The shipped composer refuses dragged folders in a browser, because a browser never reveals a dropped folder's absolute path — only a desktop shell can map a File back to one, and @deepseek-ai/dsh ships no desktop app. This plugin asks the host instead, which is not sandboxed.
Uses only documented extension points. No upstream code is patched, and no globals are written.
Limitations
- Dropped folders resolve by name inside the workspace only; anything else reports an error rather than guessing a path.
- A drop inserts a plain
@dir/text mention, not the desktop app's folder chip.