{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"wsxwj123-dsh-plugins-dsh-appearance-gallery","slug":"wsxwj123-dsh-plugins-dsh-appearance-gallery","rank":362,"url":"https://github.com/wsxwj123/dsh-plugins/tree/main/packages/dsh-appearance-gallery","name":"wsxwj123/dsh-plugins#dsh-appearance-gallery","category":"theme","description":{"zh":"15 个精选主题家族 + 9 个完整 dsh-web-ui 皮肤复刻合并为单一插件、设置页单一入口，支持 CSS-only 自定义主题 JSON、受控自定义皮肤包导入（可直接选文件夹）、试穿、应用、删除与恢复默认。","en":"Fifteen curated theme families and nine complete dsh-web-ui skin replicas in one plugin behind a single settings entry, with CSS-only custom theme JSON, controlled custom skin-pack import via folder picker, preview, apply, delete and restore-default."},"stars":8,"starsCheckedAt":"2026-08-21","repository":{"owner":"wsxwj123","repo":"dsh-plugins","requestedRef":"main","subpath":"packages/dsh-appearance-gallery"},"npm":"dsh-appearance-gallery","downloads":0,"installMode":"npm","upstreamInstall":"dsh plugin --profile web add dsh-appearance-gallery","tarball":null,"added":"2026-08-19","page":"https://awesome-dsh-plugin.com/p/wsxwj123/dsh-plugins--packages-dsh-appearance-gallery/","screenshots":["https://raw.githubusercontent.com/wsxwj123/dsh-plugins/main/assets/screenshots/appearance-gallery.png"],"discovery":{"provider":"awesome-dsh-plugin","channel":"plugins.json","indexUrl":"https://github.com/awesome-dsh-plugin/awesome-dsh-plugin","selection":"all curated entries"}},"report":{"sourceId":"wsxwj123-dsh-plugins-dsh-appearance-gallery","slug":"wsxwj123-dsh-plugins-dsh-appearance-gallery","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:24:13.772Z","scanStatus":"static-complete","verdict":"caution","score":95,"commit":"b2877ec638fca9777e549210d3578330f2049f9a","commitDate":"2026-08-21T18:38:22+08:00","artifactDigest":"sha256:7442d836a7e308475f3510198b362ca7aef2127f9cccaf2f5128a0012d4ddb46","downloadUrl":"https://github.com/wsxwj123/dsh-plugins/archive/b2877ec638fca9777e549210d3578330f2049f9a.tar.gz","installMode":"npm","installCommand":"dsh plugin --profile web add dsh-appearance-gallery","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-appearance-gallery","packageVersion":"1.0.0","bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["@deepseek-ai/dsh-client-ui-theme","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-slots"]},"lifecycleScripts":{},"peerDependencies":["@deepseek-ai/cordis","@deepseek-ai/dsh-client-ui-theme","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-slots"]},"identity":{"status":"found","installMode":"npm","upstreamNpm":"dsh-appearance-gallery","manifestName":"dsh-appearance-gallery","nameMatch":true,"npm":{"name":"dsh-appearance-gallery","latestVersion":"1.0.0","publishedAt":"2026-08-21T10:04:44.651Z","createdAt":"2026-08-21T10:04:44.274Z","versionCount":1,"maintainers":1,"repository":"git+https://github.com/wsxwj123/dsh-plugins.git","hasInstallScripts":false,"deprecated":false},"repositoryMatch":"match","provenance":"none","tarballHost":null,"versionMatch":"match"},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"appearance-gallery","name":"dsh-appearance-gallery","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["browser-ui","filesystem","host-bundle","network","subprocess"],"outboundHosts":[{"host":"www.deepseek.com","count":4},{"host":"qt.gtimg.cn","count":2},{"host":"api.binance.com","count":2},{"host":"data-api.binance.vision","count":2},{"host":"api.frankfurter.dev","count":2},{"host":"api.frankfurter.app","count":2}],"findings":[{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"build.mjs","pathClass":"source","line":149,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","hash":"dd1c818df63a6b27d96a849b","review":{"verdict":"sanitized","reason":"build.mjs:149 的 new Function(output) 仅用于构建期语法自检（只解析不调用），产物写盘前的看门狗，未在运行时执行不可信代码。","model":"sonnet","reviewedAt":"2026-08-21T10:52:54.631Z"}},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"lib/client.js","pathClass":"source","line":333,"evidence":"eval(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"出现在字符串或注释中","hash":"34ddc467b2d39bead3740572"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"lib/client.js","pathClass":"source","line":333,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"出现在字符串或注释中","hash":"86761fdb9c6cdb64004c5325"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"lib/client.js","pathClass":"source","line":283,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"87e8e136bfe0ec624b8b4ecd"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"lib/client.js","pathClass":"source","line":283,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"87e8e136bfe0ec624b8b4ecd"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"skins/miku/client.js","pathClass":"source","line":136,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"b6ca1df91cfe8821a010e8db"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"skins/miku/client.js","pathClass":"source","line":139,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"b6ca1df91cfe8821a010e8db"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"skins/qq98/client.js","pathClass":"source","line":83,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"497b71b3a76cb9518c1afc26"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"skins/ths/client.js","pathClass":"source","line":119,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"dc063066a59c8eaa6ce86f2e"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"skins/trading/client.js","pathClass":"source","line":616,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"60b228672e46843bc8e99a3a"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"skins/xp/client.js","pathClass":"source","line":108,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"0ed2292e9885791c92d90470"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"skins/xp/client.js","pathClass":"source","line":142,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"0ed2292e9885791c92d90470"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"src/custom-skin.js","pathClass":"source","line":124,"evidence":"eval(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"出现在字符串或注释中","hash":"6f56e426584068db12960d9b"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"src/custom-skin.js","pathClass":"source","line":124,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"出现在字符串或注释中","hash":"dee520a0e71c4abc0750a1f0"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"src/skin-engine.js","pathClass":"source","line":48,"evidence":"eval(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"出现在字符串或注释中","hash":"d049387c8423a3de8d1e7fbb"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"src/skin-engine.js","pathClass":"source","line":48,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"出现在字符串或注释中","hash":"ffc5a0060afc34aa1c269e25"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"tests/unit/harness.mjs","pathClass":"test-example-docs","line":175,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"位于测试、示例或文档目录","hash":"a156828e07a4d17aed896f18"}],"counts":{"critical":0,"high":0,"medium":9,"low":0},"rawCounts":{"critical":0,"high":8,"medium":9,"low":0},"vulnerabilities":[],"coverage":{"source":"complete","manifest":"complete","bundleConfig":"complete","dependencies":"lockfile-missing","vulnerabilities":"lockfile-missing","identity":"complete","artifact":"not-compared","llmReview":"complete","dynamicRuntime":"not-run","humanReview":"not-run"},"inventory":{"filesScanned":54,"bytesScanned":1751455,"truncated":false,"lockfiles":[],"pathClasses":{"markdown":2,"source":31,"cordis":1,"manifest":1,"data":9,"test-example-docs":10}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"],"review":{"model":"sonnet","reviewedAt":"2026-08-22T08:24:13.772Z","summary":null,"intentMatch":null,"findingsReviewed":1,"findingsCandidates":1,"fromCache":1,"usage":null}},"timeline":[{"scannedAt":"2026-08-22T08:24:13.772Z","commit":"b2877ec638fca9777e549210d3578330f2049f9a","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:24:09.230Z","commit":"b2877ec638fca9777e549210d3578330f2049f9a","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T10:52:54.631Z","commit":"b2877ec638fca9777e549210d3578330f2049f9a","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":"b2877ec638fca9777e549210d3578330f2049f9a","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:24:13.772Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"b2877ec638fca9777e549210d3578330f2049f9a","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:24:09.230Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"b2877ec638fca9777e549210d3578330f2049f9a","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:52:54.631Z"}]}