{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"omdsh-dev-dsh-better-sidebar","slug":"omdsh-dev-dsh-better-sidebar","rank":9,"url":"https://github.com/omdsh-dev/DSH-better-sidebar","name":"omdsh-dev/DSH-better-sidebar","category":"ui","description":{"zh":"侧边栏完整工作台：内置文件渲染编辑、终端、Git 与子代理，支持三方插件注册新 Tab。","en":"Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs."},"stars":2582,"starsCheckedAt":"2026-08-21","repository":{"owner":"omdsh-dev","repo":"DSH-better-sidebar","requestedRef":null,"subpath":""},"npm":"dsh-better-sidebar","downloads":56472,"installMode":"npm","upstreamInstall":"dsh plugin --profile web add dsh-better-sidebar","tarball":null,"added":"2026-08-14","page":"https://awesome-dsh-plugin.com/p/omdsh-dev/DSH-better-sidebar/","screenshots":[],"discovery":{"provider":"awesome-dsh-plugin","channel":"plugins.json","indexUrl":"https://github.com/awesome-dsh-plugin/awesome-dsh-plugin","selection":"all curated entries"}},"report":{"sourceId":"omdsh-dev-dsh-better-sidebar","slug":"omdsh-dev-dsh-better-sidebar","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:19:34.236Z","scanStatus":"static-complete","verdict":"caution","score":93,"commit":"b7aab48deb17b7dd92094c84441783fccaf51561","commitDate":"2026-08-22T15:34:05+08:00","artifactDigest":"sha256:cc7c7c6a28f781c79a193ec0ab5c0ec7641399d94540ecd6e984ebc46a4cfe0c","downloadUrl":"https://github.com/omdsh-dev/DSH-better-sidebar/archive/b7aab48deb17b7dd92094c84441783fccaf51561.tar.gz","installMode":"npm","installCommand":"dsh plugin --profile web add dsh-better-sidebar","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-better-sidebar","packageVersion":"0.15.0","bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-slots","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-modules"],"platform":"web"},"lifecycleScripts":{"prepare":"tsdown"},"peerDependencies":["@deepseek-ai/cordis","@deepseek-ai/dsh-agent","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-primitives","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-slots","@deepseek-ai/dsh-host-webserver","@deepseek-ai/dsh-invariants","@deepseek-ai/dsh-llm","@deepseek-ai/dsh-session","@deepseek-ai/dsh-subagent","@deepseek-ai/dsh-settings","@deepseek-ai/dsh-tools"]},"identity":{"status":"found","installMode":"npm","upstreamNpm":"dsh-better-sidebar","manifestName":"dsh-better-sidebar","nameMatch":true,"npm":{"name":"dsh-better-sidebar","latestVersion":"0.14.0","publishedAt":"2026-08-19T18:11:22.558Z","createdAt":"2026-08-13T14:26:11.670Z","versionCount":12,"maintainers":2,"repository":"https://github.com/omdsh-dev/DSH-better-sidebar","hasInstallScripts":false,"deprecated":false},"repositoryMatch":"match","provenance":"attested","tarballHost":null,"versionMatch":"differs"},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"better-sidebar","name":"dsh-better-sidebar","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":1,"clientPlatform":"web","parseErrors":[]},"capabilities":["agent-control","browser-ui","environment","filesystem","host-bundle","network","session","subprocess","telemetry"],"outboundHosts":[{"host":"dsh.internal","count":7}],"findings":[{"id":"HT-CONFIG-001","title":"Cordis 配置包含可执行 !!js 表达式","severity":"low","confidence":"high","layer":"dsh-semantics","path":"cordis.patch.yml","pathClass":"cordis","line":49,"evidence":"!!js \"[...ctx.loader.entries()].some((e) => e.options.name === 'dsh-better-sidebar' && e.options.id !== 'better-sidebar' && !e.disabled)\"","remediation":"!!js 是 DSH 的官方配置机制；只在表达式引入模块、访问进程或网络时需要额外解释。","hash":"d2ab5091d0c2867344eb0ae5"},{"id":"HT-INSTALL-002","title":"Git 安装会触发 prepare 构建脚本","severity":"medium","confidence":"low","layer":"supply-chain","path":"package.json","pathClass":"manifest","line":80,"evidence":"\"prepare\": \"tsdown\"","remediation":"发布预构建制品（npm 或 GitHub Release tarball），并记录源码与发布包的一致性证明。","note":"该插件以 npm/tarball 预构建方式分发，prepare 不在用户机器上执行","hash":"810168c20b99e01213acbe59"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"src/client/mermaid-sanitize.ts","pathClass":"source","line":4,"evidence":"dangerouslySetInnerHTML","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"附近存在清洗/转义调用","hash":"735684b0604f1b7214541896"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"src/client/mermaid-sanitize.ts","pathClass":"source","line":78,"evidence":"dangerouslySetInnerHTML","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"735684b0604f1b7214541896"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"src/client/mermaid.tsx","pathClass":"source","line":22,"evidence":"dangerouslySetInnerHTML","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"附近存在清洗/转义调用","hash":"0c9e05ef8a26152bdd113aa5"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"src/client/mermaid.tsx","pathClass":"source","line":296,"evidence":"dangerouslySetInnerHTML","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"0c9e05ef8a26152bdd113aa5"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/git.ts","pathClass":"source","line":12,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"bdc87ed605fa8a9fcf276b39"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/add-plugin-modal.spec.tsx","pathClass":"test-example-docs","line":83,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"8e8d83400c70a88d612791f2"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/bottom-auto-terminal.spec.tsx","pathClass":"test-example-docs","line":83,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"d4ce0bb0e0e2b7cdb8cb109d"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"tests/chunk-artifact.spec.ts","pathClass":"test-example-docs","line":31,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"位于测试、示例或文档目录","hash":"2c5a0880e007a29a25f0f41d"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/file-tree-drop.spec.tsx","pathClass":"test-example-docs","line":113,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"fe905e12259ebdd50fa80306"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/file-tree-drop.spec.tsx","pathClass":"test-example-docs","line":172,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"fe905e12259ebdd50fa80306"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/mermaid-markdown.spec.tsx","pathClass":"test-example-docs","line":47,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"b6a60a53d0fbbeedcafd5bbc"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/settings-nav-icon.spec.ts","pathClass":"test-example-docs","line":8,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"d38188538b40a8a336ea9635"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/settings-nav-icon.spec.ts","pathClass":"test-example-docs","line":26,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"d38188538b40a8a336ea9635"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/sidebar-crash.spec.tsx","pathClass":"test-example-docs","line":86,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"944620c08f328dd329564960"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/smoke.spec.ts","pathClass":"test-example-docs","line":7,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"c11dc49a8f0786861ef78c10"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/smoke.spec.ts","pathClass":"test-example-docs","line":7,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"6c31240f3aed786f5a29860b"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/tab-bar-middle-click.spec.tsx","pathClass":"test-example-docs","line":79,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"180b354b7d21ff36f2b467d5"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/tab-bar-wheel.spec.tsx","pathClass":"test-example-docs","line":64,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"0263dc293510e046789f16b0"}],"counts":{"critical":0,"high":0,"medium":2,"low":2},"rawCounts":{"critical":0,"high":1,"medium":15,"low":4},"vulnerabilities":[],"coverage":{"source":"complete","manifest":"complete","bundleConfig":"complete","dependencies":"lockfile-present","vulnerabilities":"complete","identity":"complete","artifact":"not-compared","llmReview":"not-needed","dynamicRuntime":"not-run","humanReview":"not-run"},"inventory":{"filesScanned":225,"bytesScanned":2459787,"truncated":false,"lockfiles":["pnpm-lock.yaml"],"pathClasses":{"test-example-docs":85,"markdown":25,"cordis":1,"data":3,"manifest":1,"source":103,"yaml":2,"script":5}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"]},"timeline":[{"scannedAt":"2026-08-22T08:19:34.236Z","commit":"b7aab48deb17b7dd92094c84441783fccaf51561","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:17:21.511Z","commit":"6cea4bdd6f178ddc57f5d0a12d655a19a010d66a","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T10:43:42.054Z","commit":"6cea4bdd6f178ddc57f5d0a12d655a19a010d66a","policyVersion":"HT-DSH-0.2.0","verdict":"caution","status":"static-complete"}],"events":[{"kind":"policy-change","from":"HT-DSH-0.2.1","to":"HT-DSH-0.2.2","commit":"b7aab48deb17b7dd92094c84441783fccaf51561","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:19:34.236Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"6cea4bdd6f178ddc57f5d0a12d655a19a010d66a","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:17:21.511Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"6cea4bdd6f178ddc57f5d0a12d655a19a010d66a","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:43:42.054Z"}]}