packages/dsh-task-board
zhu1090093659/dsh-web侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
在右侧栏文档预览里打开 STL:浏览器解析二进制/ASCII,WebGL 视口 + 尺寸/体积/表面积/水密统计。
Preview STL meshes inside DeepSeek Harness: the right-Sidebar document preview renders the triangles in an interactive 3D viewport and reports the numbers that matter for 3D printing — size, volume, surface area and watertightness.

.stl files, so clicking one in Workspace files opens it in the right Sidebar./api/preview/stl route and parses binary and ASCII STL in the browser — nothing is uploaded, nothing is converted on the host.dsh-preview-blender: orbit, pan, wheel zoom, double-click reset, wireframe, auto-rotate, contact shadow, axis triad. STL is Z-up, so the mesh is rotated into the Y-up viewport before drawing.unitScale (1 = millimetres, 10 = centimetres, 25.4 = inches).0.2.0-rc.2 and 0.2.1-rc.2).dsh plugin --profile <profile> add dsh-preview-stl
The desktop profile is owned by the Electron app; install there through the plugin manager UI, or compose it manually and restart. The package ships a cordis.patch.yml, so the plugin row is added automatically.
Settings → Plugins → STL preview (namespace preview-stl):
| Key | Default | Meaning |
|---|---|---|
enabled | true | Register the renderer and the byte route. |
routePath | /api/preview/stl | Authenticated mesh route. Must stay under /api; otherwise it falls back to the default. |
extensions | ["stl"] | Suffixes that open in the 3D preview. |
maxBytes | 536870912 | Largest STL streamed (512 MiB). |
chunkBytes | 1048576 | Bytes per ranged read on the host. |
unitScale | 1 | Millimetres per STL unit; drives size, volume and area. |
color | #c7d2e2 | Viewport colour (STL carries no materials). |
analysisMaxTriangles | 400000 | Above this, skip the watertightness pass instead of freezing the tab. |
Workspace file click
│
▼
document preview body (lib/client.js)
│ GET /api/preview/stl?path=… (raw bytes, ctx.fs chunks)
▼
parseStl(bytes) binary: 80-byte header + uint32 count + 50 B/facet
ASCII: facet normal / outer loop / vertex
│
├── analyzeStl: bbox, area, signed volume, vertex weld + edge map
└── setGeometry: rotate Z-up → Y-up, upload triangles
/api, so the connection service authenticates every request (Host/Origin fence + session cookie) before a byte is read.analysisMaxTriangles (the edge map is the expensive part); the panel says so.|Σ v0·(v1×v2)/6|), area the summed triangle areas.dev/client-body.js client UI, STL parser and statistics (CJS factory)
dev/viewer.js the WebGL renderer, spliced into the bundle at build time
scripts/build-client.mjs builds lib/client.js from the two files
scripts/live-selftest.mjs parses a real STL with the shipped bundle
scripts/e2e-browser.mjs Playwright end-to-end against a temporary DSH host
node --test test/*.test.js
lib/client.js is generated — edit the files under dev/ and rebuild.
unitScale (1 by default). Set 10 for a file authored in centimetres.analysisMaxTriangles.