{"_id":"@captain1275/dsh-client-ui-skin-center","_rev":"13-c95b720b55559a7be88b3b06ba9e03b9","name":"@captain1275/dsh-client-ui-skin-center","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.12":{"name":"@captain1275/dsh-client-ui-skin-center","version":"0.1.12","license":"Apache-2.0","_id":"@captain1275/dsh-client-ui-skin-center@0.1.12","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"dist":{"shasum":"5fb99a1f35224aafab52f60c8536dbb107329a95","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.1.12.tgz","fileCount":7,"integrity":"sha512-KD/ryeMhXDzs3a5i2RFvV3CFx0aa0E4/zmJBtQTwfT03TiwhTAh/bnu9+Nplv1H7Tb+5fSboSOpFZaBtfXPeAw==","signatures":[{"sig":"MEUCIQD7GXml6JOqFhtwPi1oHwOfFeJGHXFI/rUG/VEVAdXjOwIgUimf7vVAjxQo09Jk1kkiLseuNaXGGcVG5S7r8z9/qeA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186604},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./src/*":"./src/*","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsdown","watch":"tsdown --watch"},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"repository":{"url":"https://github.com/zhu1090093659/dsh-web-ui.git","type":"git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (qq98 / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wi","directories":{},"_nodeVersion":"24.18.0","dependencies":{"schemastery":"^3.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"29.1.1","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","lightningcss":"^1.32.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-theme":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-client-ui-skin-center_0.1.12_1786720991137_0.44068669244169745","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@captain1275/dsh-client-ui-skin-center","version":"0.2.0","license":"Apache-2.0","_id":"@captain1275/dsh-client-ui-skin-center@0.2.0","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"dist":{"shasum":"bc26c1966fca2abd1de516a924ce1bbe85bb410d","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.2.0.tgz","fileCount":7,"integrity":"sha512-eZj/Hitfxxq9YZktivTSkDEF4rQSurMMMcCGgW1U21QIvxv7NWUYq41xiRIvyxrr0IRMPa1TgLjDXGI6o+Qtmg==","signatures":[{"sig":"MEQCIGMwAfJNnpow5lQ7peAo8RbbIpXu6muYjcFWbN6V2VlEAiAKdG00BZF+T7gnjZPVG5C7NcTd9WK3ZqPBQza9jq7NEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186601},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./src/*":"./src/*","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsdown","watch":"tsdown --watch"},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"repository":{"url":"https://github.com/CAPTAIN1275/dsh-ui-web.git","type":"git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (qq98 / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wi","directories":{},"_nodeVersion":"24.18.0","dependencies":{"schemastery":"^3.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"29.1.1","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","lightningcss":"^1.32.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-theme":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-client-ui-skin-center_0.2.0_1786730863018_0.6572781181109246","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@captain1275/dsh-client-ui-skin-center","version":"0.2.1","license":"Apache-2.0","_id":"@captain1275/dsh-client-ui-skin-center@0.2.1","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"dist":{"shasum":"10b71ac86fdf43955e1e8b52f2015f5acc00b88a","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.2.1.tgz","fileCount":7,"integrity":"sha512-K+6M373TDeButRGSiGJb60ZE8iMXJ+n7Hm2AGvaYzV1peDkS5iIeMB7NWmvSDkypdyLUM+x4k0GCCW+l6vQ9Jg==","signatures":[{"sig":"MEYCIQD+04nnLwVd+WV6+bhT6hSuQ6TYRuzILSdNqAqGUqdLCwIhANrrG7qRdMfzay+1KsqT2ZeGHlCYwUIcBKRU+4BwStme","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186601},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./src/*":"./src/*","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsdown","watch":"tsdown --watch"},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"repository":{"url":"https://github.com/CAPTAIN1275/dsh-ui-web.git","type":"git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (qq98 / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wi","directories":{},"_nodeVersion":"24.18.0","dependencies":{"schemastery":"^3.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"29.1.1","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","lightningcss":"^1.32.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-theme":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-client-ui-skin-center_0.2.1_1786731868225_0.886946908149588","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@captain1275/dsh-client-ui-skin-center","version":"0.2.2","license":"Apache-2.0","_id":"@captain1275/dsh-client-ui-skin-center@0.2.2","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"dist":{"shasum":"44e7fb5aa47d3922a31e099ae9e4a538dc9f7aa4","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.2.2.tgz","fileCount":7,"integrity":"sha512-phXJhoIWv1/sAYujwSIRO5bPr6NZdCarWhHTrA8N9vppMchC3NGAnR7iLHbenss58JouJ/skAOW6FKUt3uwA6g==","signatures":[{"sig":"MEQCICXlx6EQ5QuTo2t2NN/loVoYroAjeAl4PHSjtyldTx4zAiBD9RuI0+RMdhmELaWHr60AR2m2GEjkdzi/UqPusfak+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186601},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./src/*":"./src/*","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsdown","watch":"tsdown --watch"},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"repository":{"url":"https://github.com/CAPTAIN1275/dsh-ui-web.git","type":"git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (qq98 / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wi","directories":{},"_nodeVersion":"24.18.0","dependencies":{"schemastery":"^3.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"29.1.1","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","lightningcss":"^1.32.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-theme":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-client-ui-skin-center_0.2.2_1786778169843_0.8831023444031345","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@captain1275/dsh-client-ui-skin-center","version":"0.2.3","license":"Apache-2.0","_id":"@captain1275/dsh-client-ui-skin-center@0.2.3","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"dist":{"shasum":"c6356d81a7b881fd9ede0d79bc7c05047db25811","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.2.3.tgz","fileCount":7,"integrity":"sha512-Yo6/8qRZ8yZTa2+8DpwNqQ+8Fju+fgddpQSfUeq1rrlJ7TeDZKU3ZEj68NCpDSqQgJoDJJP1eN5iBFp7+an5wg==","signatures":[{"sig":"MEQCICf5S0QRioGfRvewkyucXHhivHWqXnG41Yt9iaBe9dXAAiALb7tVdkTB9te7+7fRXx7+0hf9PvI/L1XWnBRyTA5yUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185224},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./src/*":"./src/*","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsdown","watch":"tsdown --watch"},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"repository":{"url":"https://github.com/CAPTAIN1275/dsh-ui-web.git","type":"git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (ths / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wit","directories":{},"_nodeVersion":"24.18.0","dependencies":{"schemastery":"^3.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"29.1.1","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","lightningcss":"^1.32.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-theme":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-client-ui-skin-center_0.2.3_1786794972833_0.06835205249413323","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@captain1275/dsh-client-ui-skin-center","version":"0.2.4","license":"Apache-2.0","_id":"@captain1275/dsh-client-ui-skin-center@0.2.4","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"dist":{"shasum":"2348f15ef0fb53edb7361202fe2eca0d13b5f363","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.2.4.tgz","fileCount":7,"integrity":"sha512-p/AHeDjYyJz24R7KE5Zva9w77qvpvCSun1JEl1xJpV8QE6Umg01DmtWx2zHcgRq7Q4R7IduUXQ4gSTmucEu16Q==","signatures":[{"sig":"MEYCIQC1qeCVMmOxlXiSNrqxfgA6Qs9cycj367K19PLweLZg4wIhAMZx4RM2ULkYcI4vE+qXUif9lVH0cS3a1HvxXthOCMOQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192238},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./src/*":"./src/*","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsdown","watch":"tsdown --watch"},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"repository":{"url":"https://github.com/CAPTAIN1275/dsh-ui-web.git","type":"git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (ths / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wit","directories":{},"_nodeVersion":"24.18.0","dependencies":{"schemastery":"^3.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"29.1.1","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","lightningcss":"^1.32.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-theme":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-client-ui-skin-center_0.2.4_1786824367924_0.2700454913523447","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@captain1275/dsh-client-ui-skin-center","version":"0.2.5","license":"Apache-2.0","_id":"@captain1275/dsh-client-ui-skin-center@0.2.5","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"dist":{"shasum":"e6861f2609248b35dd4b43d5b3b35360b92996fb","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.2.5.tgz","fileCount":7,"integrity":"sha512-zcXJnrqj8kAgaSLpcJr9+wsd9qKNnSNYoQDr7lJNi/p8D+2CW4XhM4srmXGMicSyPA8FV9Qu/GLDjcwQe6tTxw==","signatures":[{"sig":"MEYCIQC7a9up6zEcIr8H2KqNAdyWEqRN6UXjPNaFfaX4cYKgZwIhAKxhueB0SDR2Pc0vMDYyPbMuwbLLLwJLY9+bCfD41XCh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198390},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./src/*":"./src/*","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsdown","watch":"tsdown --watch"},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"repository":{"url":"https://github.com/CAPTAIN1275/dsh-ui-web.git","type":"git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (ths / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wit","directories":{},"_nodeVersion":"24.18.0","dependencies":{"schemastery":"^3.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"29.1.1","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","lightningcss":"^1.32.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-theme":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-client-ui-skin-center_0.2.5_1786889646083_0.28113824928099573","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@captain1275/dsh-client-ui-skin-center","version":"0.2.6","license":"Apache-2.0","_id":"@captain1275/dsh-client-ui-skin-center@0.2.6","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"dist":{"shasum":"4691edd498542e7c9750e181fb437425bc81c662","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.2.6.tgz","fileCount":7,"integrity":"sha512-CLPO0Q+xAODLe+Sf+6t9cUfAb/cCZBMMe/EfDqaeknmOoMkAZHOioOzZTMAHByj1IeBeAL+YhHeFfW3sGuVGww==","signatures":[{"sig":"MEUCIDkV7dAQj7vDWbhN+lA1VLP1Yd1oACaTtiZEnOi83Jl7AiEAjUBRN2pJl5ijJLzpvGtddmVFmIXNO/MuaNsBwqbnyGI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198390},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./src/*":"./src/*","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsdown","watch":"tsdown --watch"},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"repository":{"url":"https://github.com/CAPTAIN1275/dsh-ui-web.git","type":"git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (ths / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wit","directories":{},"_nodeVersion":"24.18.0","dependencies":{"schemastery":"^3.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"29.1.1","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","lightningcss":"^1.32.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-theme":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-client-ui-skin-center_0.2.6_1786899579691_0.7404904875815776","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@captain1275/dsh-client-ui-skin-center","version":"0.2.7","license":"Apache-2.0","_id":"@captain1275/dsh-client-ui-skin-center@0.2.7","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"dist":{"shasum":"70ad55455720443b17efa004296f421eaf6134ba","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.2.7.tgz","fileCount":7,"integrity":"sha512-Clj1iIUP817Vx1Q7Qp/1IRbAHDdKpivOZ1Rbp8B3l7S5iznFWU7kEGOEK+rdyBGsjzpc+DZUlLr+9uJpOIINqQ==","signatures":[{"sig":"MEYCIQDC0yIV2pUfnLHppbAbKz/ByEkAtQxrNs0559IiwJJlnAIhAOELIXdLYi567UONwNzhVKY11Dy693fAG5tiM1wIb+4H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198390},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./src/*":"./src/*","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsdown","watch":"tsdown --watch"},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"repository":{"url":"https://github.com/CAPTAIN1275/dsh-ui-web.git","type":"git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (ths / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wit","directories":{},"_nodeVersion":"24.18.0","dependencies":{"schemastery":"^3.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"29.1.1","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","lightningcss":"^1.32.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-theme":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-client-ui-skin-center_0.2.7_1786900996744_0.6319463732493091","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@captain1275/dsh-client-ui-skin-center","version":"0.2.8","license":"Apache-2.0","_id":"@captain1275/dsh-client-ui-skin-center@0.2.8","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"dist":{"shasum":"cdd24b8db45f215c4ca74522f76bf673bc0f2195","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.2.8.tgz","fileCount":7,"integrity":"sha512-u6B4e9V4mRaypUX9EZAjYY9C0tjTfT3VGuXneRGTMrnYIkKCKnEVSN+v4Wlt7pH8E9b1Ub2Sc1813sE/iSNAuw==","signatures":[{"sig":"MEQCIFdIn7rTtoGpioyeA+Qu6mvTNP2jEZgJOAZgOGVlw/NyAiATOYLmTRlqIgLQygfQTu1rVtf1A0QgDgkniSADKRM1VQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198390},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./src/*":"./src/*","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsdown","watch":"tsdown --watch"},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"repository":{"url":"https://github.com/CAPTAIN1275/dsh-ui-web.git","type":"git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (ths / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wit","directories":{},"_nodeVersion":"24.18.0","dependencies":{"schemastery":"^3.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"29.1.1","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","lightningcss":"^1.32.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-theme":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-client-ui-skin-center_0.2.8_1786902022085_0.11385176694125021","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@captain1275/dsh-client-ui-skin-center","version":"0.2.9","license":"Apache-2.0","_id":"@captain1275/dsh-client-ui-skin-center@0.2.9","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"dist":{"shasum":"099e4caa49742459c7bc186cb163fb3548d52278","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.2.9.tgz","fileCount":7,"integrity":"sha512-oWy9EZP4pBJjIiHP6fmowPsiIX0YM0G30t0iT/vEgvMCbqNJL8Ws5/7tJltjRMDrOri04VJ2y2UV0zBY+l+Uyw==","signatures":[{"sig":"MEUCIQDvHGweHzsT5lUNeTfOwlM0mCDtVOY8Hll0jwXafINz2gIgAMVZMMQGOMIBT9nPlUvzAbHLvU4y3PDc2nFWPGu48y8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199048},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./src/*":"./src/*","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsdown","watch":"tsdown --watch"},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"repository":{"url":"https://github.com/CAPTAIN1275/dsh-ui-web.git","type":"git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (ths / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wit","directories":{},"_nodeVersion":"24.18.0","dependencies":{"schemastery":"^3.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"29.1.1","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","lightningcss":"^1.32.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"^0.1.1-rc.2","@deepseek-ai/dsh-client-locale":"^0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"^0.1.1-rc.2","@deepseek-ai/dsh-host-webserver":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-theme":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-settings":"^0.1.1-rc.2"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-client-ui-skin-center_0.2.9_1787408160233_0.9547424699030784","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@captain1275/dsh-client-ui-skin-center","version":"0.3.0","license":"Apache-2.0","_id":"@captain1275/dsh-client-ui-skin-center@0.3.0","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"dist":{"shasum":"e64193892ceeb51c9ac1c16968f8f838d92c8b1c","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.3.0.tgz","fileCount":7,"integrity":"sha512-lj1Rmdq0joPHqXfQGJ+mvnY+8TqCvbGvs5AlO2ra+iYczNFMgy8cXS6HBZg20oWTh+PYcV3B1T3iECO9cMCnOg==","signatures":[{"sig":"MEUCIQDly/PXg8jEx+bYUzCX773xLkT+wIyp4owIFC6AWDgKUgIgSpBWZDqBGMcvCqwHhXa02/VL9Z1TcI6KPs0OPFt3oqY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199048},"main":"lib/index.js","type":"module","exports":{".":"./lib/index.js","./src/*":"./src/*","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsdown","watch":"tsdown --watch"},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"repository":{"url":"https://github.com/CAPTAIN1275/dsh-ui-web.git","type":"git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (ths / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wit","directories":{},"_nodeVersion":"24.18.0","dependencies":{"schemastery":"^3.18.0"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"29.1.1","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","lightningcss":"^1.32.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-settings":"^0.1.1-rc.2","@deepseek-ai/dsh-client-locale":"^0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"^0.1.1-rc.2","@deepseek-ai/dsh-host-webserver":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-theme":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-settings":"^0.1.1-rc.2"},"peerDependencies":{"react":"^18.2.0"},"_npmOperationalInternal":{"tmp":"tmp/dsh-client-ui-skin-center_0.3.0_1787410743409_0.721902907199016","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@captain1275/dsh-client-ui-skin-center","description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (ths / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wit","version":"0.3.1","type":"module","main":"lib/index.js","exports":{".":"./lib/index.js","./client":"./lib/client.js","./src/*":"./src/*","./package.json":"./package.json"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme"],"platform":"web"}},"license":"Apache-2.0","dependencies":{"schemastery":"^3.18.0"},"peerDependencies":{"react":"^18.2.0"},"devDependencies":{"jsdom":"29.1.1","lightningcss":"^1.32.0","react":"^18.2.0","tsdown":"^0.22.2","vitest":"^4.1.8","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-client-locale":"^0.1.1-rc.2","@deepseek-ai/dsh-client-runtime":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-settings":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-slots":"^0.1.1-rc.2","@deepseek-ai/dsh-client-ui-theme":"^0.1.1-rc.2","@deepseek-ai/dsh-host-webserver":"^0.1.1-rc.2","@deepseek-ai/dsh-settings":"^0.1.1-rc.2"},"repository":{"type":"git","url":"https://github.com/CAPTAIN1275/dsh-ui-web.git"},"scripts":{"build":"tsdown","watch":"tsdown --watch","test":"vitest run"},"_nodeVersion":"24.18.0","_id":"@captain1275/dsh-client-ui-skin-center@0.3.1","dist":{"integrity":"sha512-S23xFIZCtuwHHJkYEUjscmzNhtLrhjztChlkbXuArraexoCzNebDWhwV2lg1nzVC8/Ia3c6gVgQs/kxMYq8XDw==","shasum":"0184371349332bdefe425405a661c566ac612929","tarball":"https://registry.npmjs.org/@captain1275/dsh-client-ui-skin-center/-/dsh-client-ui-skin-center-0.3.1.tgz","fileCount":7,"unpackedSize":200049,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC1yHSNI/NiW15i6Xok+vYBPbnJl6yF5HB3hi/WIbTduAiEA3DlckCGSdS8ad2joIywAOraeqqDFgNA/98b9xJZZmOo="}]},"_npmUser":{"name":"captain1275","email":"captain1275@163.com"},"directories":{},"maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-client-ui-skin-center_0.3.1_1787429017216_0.528706131062588"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-14T15:23:10.991Z","modified":"2026-08-22T20:03:37.501Z","0.1.12":"2026-08-14T15:23:11.271Z","0.2.0":"2026-08-14T18:07:43.170Z","0.2.1":"2026-08-14T18:24:28.385Z","0.2.2":"2026-08-15T07:16:10.054Z","0.2.3":"2026-08-15T11:56:12.986Z","0.2.4":"2026-08-15T20:06:08.104Z","0.2.5":"2026-08-16T14:14:06.240Z","0.2.6":"2026-08-16T16:59:39.831Z","0.2.7":"2026-08-16T17:23:16.895Z","0.2.8":"2026-08-16T17:40:22.240Z","0.2.9":"2026-08-22T14:16:00.381Z","0.3.0":"2026-08-22T14:59:03.588Z","0.3.1":"2026-08-22T20:03:37.364Z"},"license":"Apache-2.0","repository":{"type":"git","url":"https://github.com/CAPTAIN1275/dsh-ui-web.git"},"description":"In-GUI skin center for the dsh web GUI: lists the official default plus every installed skin (ths / ths / xp / blue-fantasy / dragon-heir / minecraft), tries it on live inside the real GUI (executes the actual client bundle, light/dark preview), exits wit","maintainers":[{"name":"captain1275","email":"captain1275@163.com"}],"readme":"# Skin Center（GUI 内嵌皮肤中心）\n\n`@captain1275/dsh-client-ui-skin-center`（cordis 插件 id `ui-skin-center`）把皮肤列表/试穿/应用\n内嵌进真实 dsh Web GUI 的插件配置页，作为「Web UI 插件」组里的一张卡片\n（设置 → 插件配置 → Web UI 插件 → 皮肤中心），与 task-board / pet / live-stats 等\n全家桶插件同一套槽位（`web-ui.plugin.item`），不占设置页一级导航。\n\n- 列表：展示「官方默认」+ 仓库里全部皮肤（ths / xp / blue-fantasy / dragon-heir /\n  minecraft）的名称、tagline、强调色；当前激活的目标带 Active 标记。\n- 试穿：点击「Try on」后按需加载该皮肤的 client bundle——host 路由\n  `/api/skin-center/bundle/<id>` 以同源 script 提供 `lib/client.js`（内核加载插件的同一机制），\n  factory 注册到页面自己的 `window.__ModuleLoader__`，`window.__DSH_MODULES__.import` 物化\n  （不是模拟器、不用 eval），chrome 立即生效；\n  亮/暗切换走官方 theme 服务；「Exit try-on」完全还原——当前皮肤的样式、DOM、favicon、\n  标题、body 内联样式全部恢复。「官方默认」也可试穿：点一下皮肤立即收回、回到官方外观预览。\n- 互斥：试穿期间会按配方暂时收回当前激活皮肤的视觉写面（body 属性、背景内联样式、\n  chrome 子节点、xp 的 footer taskbar），退出后原样恢复；同一时刻页面上只有一套皮肤。\n- 应用：host 半区（`src/index.ts` + `src/routes.ts`）暴露 `/api/skin-center/apply` 与\n  `/api/skin-center/bundle/<id>`（按需提供皮肤 bundle），\n  点击「Apply / 恢复默认」即在服务端执行 `dsh-skin use <name>`（或 `use official`），\n  写入 `~/.dsh/cordis.patch.yml` 后由 DSH 配置 watcher 秒级热载入，页面自动刷新生效——\n  **无需重启 dsh web，无需复制命令**。应用失败时错误提示里附带终端兜底命令。\n  host 依赖 `dsh-skin` CLI 在 PATH（`~/.local/bin/dsh-skin`，仓库 `scripts/dsh-skin`）。\n  Windows 兼容性：`dsh-skin` 的 harness home 取 `$DSH_HOME`（缺省 `~/.dsh`），仓库根目录从\n  脚本自身位置推导（可用 `DSH_SKIN_REPO` 覆盖），不依赖 `$HOME` 与固定路径；Windows 用户\n  自建 `dsh-skin.cmd` 包装（内容 `node scripts/dsh-skin %*`）放入 PATH 目录即可。host 端在\n  Windows 上经 shell 调用该命令——`execFile` 无法直接启动裸名 `.cmd`。\n\n## 安装（官方 plugin bundle 方式）\n\n推荐先装皮肤全家桶聚合包 `@captain1275/dsh-skins` 一次到位（含全部皮肤与皮肤中心）；\n只装本包时用下列 link 命令。\n\n```sh\n# 装全部皮肤（推荐）\ndsh plugin --profile web add @captain1275/dsh-skins\n# 或单独装皮肤中心\ndsh plugin --profile web add @captain1275/dsh-client-ui-skin-center\n# 从仓库安装（开发调试）：dsh plugin --profile web add link:$(pwd)/packages/skins/skin-center\n```\n\n`$(pwd)` 指克隆全家桶仓库后的目录。\n\nskin-center 是符合 DSH 官方插件标准的自包含 bundle（`dsh.bundle.patch` 指向\n`cordis.patch.yml`、`prepare` 用专用 tsdown 配置自包含构建，无项目引用、无类型检查），\n也可经 git 安装：`dsh plugin --profile web add github:<org>/dsh-web-ui#<sha>`\n（`prepare` 会原地构建 `lib/`）。\n\n本地 link 安装前需先在全家桶仓库内构建产物（`lib/` 被 git 忽略、不随仓库提交）：\n`pnpm install && pnpm -r build` 后再 link 安装。\n\npnpm ≥10 安装 git 依赖前需先授权 `allowBuilds`（`prepare` 会原地构建），本地 link 安装则无此要求。\n\n需要皮肤插件们（ths / xp / blue-fantasy）在宿主里也可解析时，skin-center 才能\n完整列出 / 试穿全部皮肤；skin-center 本身无互斥要求。\n\n## 目录结构\n\n```\nskins/skin-center/\n  package.json / tsdown.config.ts / tsconfig.json   # checkout 内构建所需的元数据\n  src/index.ts                                       # host 侧：注册 /api/skin-center/* 路由\n  src/routes.ts                                      # host 路由（代理 dsh-skin CLI）\n  src/invariant.ts                                   # invariant 伴随插件（无断言）\n  src/client/index.ts                                # apply：注册 Web UI 插件组卡片 + body 作用域\n  src/client/SkinCenter.tsx                          # 卡片组件（官方默认 + 列表/试穿/亮暗/一键应用）\n  src/client/try-on.ts                               # 试穿引擎（真实 loader + 互斥还原，含官方试穿）\n  src/client/locales.ts                              # en/zh 文案\n  src/client/skin-center.module.css                  # 面板样式（--dsw-* token，随皮肤自适应）\n  src/client/generated/skins.ts                      # 生成：皮肤注册表（仅元数据，勿手改）\n```\n\n## 机制要点\n\n- 皮肤枚举：`generated/skins.ts` 由 `scripts/skin-center-bundles` 生成（读\n  `skins/<name>/skin.json`，校验 `lib/client.js` 存在）。**只含元数据，不内嵌 bundle 文本**：\n  冷启动不解析 ~700KB 的 base64 美术资源，且生成文件跨机器可复现（无构建机绝对路径）。\n- 试穿加载：host 路由 `/api/skin-center/bundle/<id>` 按需提供 `lib/client.js`\n  （同源 script，`<script>` 标签加载——与内核 `defaultLoadBundle` 同一机制），bundle 体调用\n  `window.__ModuleLoader__.load` 只注册 factory；`window.__DSH_MODULES__.import(package)`\n  物化模块（CSS `<style data-plugin>` 自动注入）；`surface.apply(miniCtx)` 挂载，\n  miniCtx 只实现 `effect(cb)`（皮肤唯一依赖）。不依赖 eval，因此不要求 CSP 放行\n  `unsafe-eval`——只要求同源 script 可加载（页面自身加载插件 bundle 亦然）。\n- 失败语义：bundle 路由 404（皮肤未安装 / `lib/client.js` 未构建）或网络失败时，\n  script 的 error 事件触发，试穿报通用错误并完整还原激活皮肤；加载与还原之间不会留下半套\n  皮肤（tryOn 的 catch 分支负责恢复）。\n- 退出还原：先跑皮肤的 disposer（属性/chrome/favicon/标题/背景全撤回），再\n  `invalidate(package)` + 删 style 标签，最后把激活皮肤的视觉快照原样恢复。\n  官方默认试穿 = 同一套收回配方但不挂载任何皮肤，退出同样原样恢复。\n- 激活皮肤检测：`window.__DSH_BOOT__.entries` 只含启用条目，与注册表 package 比对；\n  无匹配即官方默认。\n- 一键应用：host `/api/skin-center/apply` 代理 `dsh-skin use <name>` / `use official`\n  （CLI 是 managed 区段与 symlink 的唯一权威）。DSH 长驻表面自带配置 watcher\n  （`watchUserPatches` + config-only HMR），patch 写入后数秒热载入、无需重启；\n  浏览器刷新页面取新 boot 图即生效（client 插件图行增删不在 `dsh-client-hmr` 语义内）。\n\n## 构建（仓库内 tsdown，无需 DSH checkout）\n\n皮肤中心与皮肤一样，用仓库内共享 tsdown 预设构建（`shared/tsdown.client.ts`\n处理 CSS Modules 注入与平台外部化；类型来自官方 NPM SDK devDependencies）：\n\n```sh\n# 1. 重新生成注册表（皮肤元数据变化后重跑；bundle 文本按需走 host 路由，无需重生成）\nnode scripts/skin-center-bundles\n#    皮肤 bundle 自身变化只需重建对应皮肤（tsdown），GUI 下次试穿即取到新文本\n\n# 2. 在仓库内构建\ncd ~/code/dsh-web-ui && export NPM_TOKEN='<token>'   # 若仍使用私有 scope 认证\npnpm --filter @captain1275/dsh-client-ui-skin-center run bundle\n```\n\n## 安装（个人环境接线，不在 checkout 提交）\n\n```sh\n# 1. profile symlink（与 ths/blue-fantasy 同款）\nln -sfn ~/code/dsh-web-ui/packages/skins/skin-center \\\n  ~/.dsh/profiles/node_modules/@captain1275/dsh-client-ui-skin-center\n\n# 2. ~/.dsh/cordis.patch.yml 增加（放在 dsh-skin managed 段之外，勿动该段）：\n#   - insert:\n#       - id: ui-skin-center\n#         name: '@captain1275/dsh-client-ui-skin-center'\n\n# 3. 配置 watcher 秒级热载入；刷新页面即在 插件配置 → Web UI 插件 组里看到皮肤中心卡片\n```\n\n## 试穿互斥的还原配方（try-on.ts）\n\n| 皮肤 | body 属性 | 额外处理 |\n| --- | --- | --- |\n| 全部 | 收回 `bodyAttr`（CSS 失活） | 快照/清空 body 背景内联样式（blue-fantasy 鲸鱼背景）；摘除 body 直接子节点中非 `#root` 的 chrome（实测仅皮肤 chrome）；中性化观察器防幽灵写回 |\n| xp | 同上 | 额外注入 neutralizer CSS 隐藏 sidebar footer 的 taskbar/开始按钮（其规则未按属性作用域） |\n\n退出试穿 = 试穿皮肤 disposer（真实代码路径）→ 模块 invalidate + 样式清理 → 激活皮肤快照原样恢复。\n\n## 验收对照（README 顶层契约）\n\n- [x] 插件配置 → Web UI 插件 组里出现皮肤中心卡片，无 console 报错\n- [x] 列表含官方默认 + 全部皮肤，当前激活有标记\n- [x] 试穿真实生效（chrome/背景/标题/favicon），亮/暗正确；官方默认可试穿\n- [x] 退出完全还原；互斥（不出现两套标题栏）\n- [x] 一键应用：host API 执行 `dsh-skin use`，watcher 热载入，页面自动刷新生效（无重启）；失败附命令兜底\n- [x] 回归：dsh-skin CLI（含 `use official`）、网页 Gallery、官方 GUI 不受影响\n- [x] 按需加载：冷启动不解析 ~700KB 内嵌 base64（`generated/skins.ts` 仅 5KB 元数据），试穿按需取 bundle；无 eval（CSP 无需 `unsafe-eval`）\n- [x] e2e 截图见 `docs/e2e/skin-center/`","readmeFilename":""}