feat: serve skin assets as WebP

This commit is contained in:
kingOfSoySauce
2026-08-21 11:05:20 +08:00
parent 21374916b6
commit d2d605a0bd
57 changed files with 107 additions and 107 deletions

View File

@@ -78,10 +78,10 @@ dsh --profile web --dump-config | grep -B1 -A2 liang-intensity
### 方式二:从 GitHub Release tarball 安装
从本仓库 [Releases](https://github.com/kingOfSoySauce/dsh-liang-skin/releases) 页面下载 `dsh-client-liang-intensity-skin-0.1.6.tgz`(包内已包含构建好的 `lib/client.js`,安装时不需要执行任何 prepare 脚本),然后:
从本仓库 [Releases](https://github.com/kingOfSoySauce/dsh-liang-skin/releases) 页面下载 `dsh-client-liang-intensity-skin-0.1.7.tgz`(包内已包含构建好的 `lib/client.js`,安装时不需要执行任何 prepare 脚本),然后:
```sh
dsh plugin --profile web add ./dsh-client-liang-intensity-skin-0.1.6.tgz
dsh plugin --profile web add ./dsh-client-liang-intensity-skin-0.1.7.tgz
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

BIN
assets/liang-poster.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 972 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1000 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

View File

@@ -788,30 +788,30 @@ var LOCALE_NAMESPACE = "liang.skin";
var ASSET_PREFIX = `/plugins/${PACKAGE_ID}/assets`;
var BIND_EFFORT_KEY = "dsh-liang-intensity-skin.bind-effort";
var PORTRAIT_ANCHORS = [
{ level: 0, file: "stage-00.png" },
{ level: 1, file: "level-01.png" },
{ level: 3, file: "level-03.png" },
{ level: 4, file: "level-04.png" },
{ level: 6, file: "stage-06.png" },
{ level: 7, file: "level-07.png" },
{ level: 9, file: "level-09.png" },
{ level: 10, file: "level-10.png" },
{ level: 12, file: "stage-12.png" },
{ level: 13, file: "level-13.png" },
{ level: 14, file: "level-14.png" },
{ level: 15, file: "bridge-15.png" },
{ level: 16, file: "level-16.png" },
{ level: 17, file: "level-17.png" },
{ level: 18, file: "stage-18.png" },
{ level: 19, file: "level-19.png" },
{ level: 21, file: "level-21.png" },
{ level: 22, file: "level-22.png" },
{ level: 24, file: "stage-24.png" },
{ level: 25, file: "level-25.png" },
{ level: 27, file: "bridge-27.png" },
{ level: 28, file: "level-28.png" },
{ level: 29, file: "level-29.png" },
{ level: 30, file: "stage-30.png" }
{ level: 0, file: "stage-00.webp" },
{ level: 1, file: "level-01.webp" },
{ level: 3, file: "level-03.webp" },
{ level: 4, file: "level-04.webp" },
{ level: 6, file: "stage-06.webp" },
{ level: 7, file: "level-07.webp" },
{ level: 9, file: "level-09.webp" },
{ level: 10, file: "level-10.webp" },
{ level: 12, file: "stage-12.webp" },
{ level: 13, file: "level-13.webp" },
{ level: 14, file: "level-14.webp" },
{ level: 15, file: "bridge-15.webp" },
{ level: 16, file: "level-16.webp" },
{ level: 17, file: "level-17.webp" },
{ level: 18, file: "stage-18.webp" },
{ level: 19, file: "level-19.webp" },
{ level: 21, file: "level-21.webp" },
{ level: 22, file: "level-22.webp" },
{ level: 24, file: "stage-24.webp" },
{ level: 25, file: "level-25.webp" },
{ level: 27, file: "bridge-27.webp" },
{ level: 28, file: "level-28.webp" },
{ level: 29, file: "level-29.webp" },
{ level: 30, file: "stage-30.webp" }
];
var ANCHOR_LEVELS = PORTRAIT_ANCHORS.map((anchor) => anchor.level);
var cssVariables = [
@@ -857,7 +857,7 @@ var SkinPresenter = class {
this.root.setAttribute("aria-hidden", "true");
this.poster = document.createElement("img");
this.poster.className = "liang-skin-poster";
this.poster.src = `${ASSET_PREFIX}/liang-poster.png`;
this.poster.src = `${ASSET_PREFIX}/liang-poster.webp`;
this.poster.alt = "";
this.portrait = document.createElement("img");
this.portrait.className = "liang-skin-sequence-frame";

File diff suppressed because one or more lines are too long

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "dsh-client-liang-intensity-skin",
"version": "0.1.5",
"version": "0.1.7",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "dsh-client-liang-intensity-skin",
"version": "0.1.5",
"version": "0.1.7",
"devDependencies": {
"@types/react": "~18.3.1",
"esbuild": "^0.25.0",

View File

@@ -1,6 +1,6 @@
{
"name": "dsh-client-liang-intensity-skin",
"version": "0.1.6",
"version": "0.1.7",
"private": true,
"description": "滑动变祖:an opt-in adaptive reasoning slider skin for DeepSeek Harness",
"repository": {
@@ -17,31 +17,31 @@
"./package.json": "./package.json"
},
"files": [
"assets/liang-poster.png",
"assets/portrait-source-v2/stage-00.png",
"assets/portrait-source-v2/level-01.png",
"assets/portrait-source-v2/level-03.png",
"assets/portrait-source-v2/level-04.png",
"assets/portrait-source-v2/stage-06.png",
"assets/portrait-source-v2/level-07.png",
"assets/portrait-source-v2/level-09.png",
"assets/portrait-source-v2/level-10.png",
"assets/portrait-source-v2/stage-12.png",
"assets/portrait-source-v2/level-13.png",
"assets/portrait-source-v2/level-14.png",
"assets/portrait-source-v2/bridge-15.png",
"assets/portrait-source-v2/level-16.png",
"assets/portrait-source-v2/level-17.png",
"assets/portrait-source-v2/stage-18.png",
"assets/portrait-source-v2/level-19.png",
"assets/portrait-source-v2/level-21.png",
"assets/portrait-source-v2/level-22.png",
"assets/portrait-source-v2/stage-24.png",
"assets/portrait-source-v2/level-25.png",
"assets/portrait-source-v2/bridge-27.png",
"assets/portrait-source-v2/level-28.png",
"assets/portrait-source-v2/level-29.png",
"assets/portrait-source-v2/stage-30.png",
"assets/liang-poster.webp",
"assets/portrait-source-v2/stage-00.webp",
"assets/portrait-source-v2/level-01.webp",
"assets/portrait-source-v2/level-03.webp",
"assets/portrait-source-v2/level-04.webp",
"assets/portrait-source-v2/stage-06.webp",
"assets/portrait-source-v2/level-07.webp",
"assets/portrait-source-v2/level-09.webp",
"assets/portrait-source-v2/level-10.webp",
"assets/portrait-source-v2/stage-12.webp",
"assets/portrait-source-v2/level-13.webp",
"assets/portrait-source-v2/level-14.webp",
"assets/portrait-source-v2/bridge-15.webp",
"assets/portrait-source-v2/level-16.webp",
"assets/portrait-source-v2/level-17.webp",
"assets/portrait-source-v2/stage-18.webp",
"assets/portrait-source-v2/level-19.webp",
"assets/portrait-source-v2/level-21.webp",
"assets/portrait-source-v2/level-22.webp",
"assets/portrait-source-v2/stage-24.webp",
"assets/portrait-source-v2/level-25.webp",
"assets/portrait-source-v2/bridge-27.webp",
"assets/portrait-source-v2/level-28.webp",
"assets/portrait-source-v2/level-29.webp",
"assets/portrait-source-v2/stage-30.webp",
"cordis.patch.yml",
"lib/client.js",
"lib/client.js.map",

View File

@@ -27,30 +27,30 @@ const ASSET_PREFIX = `/plugins/${PACKAGE_ID}/assets`;
const BIND_EFFORT_KEY = "dsh-liang-intensity-skin.bind-effort";
const PORTRAIT_ANCHORS = [
{ level: 0, file: "stage-00.png" },
{ level: 1, file: "level-01.png" },
{ level: 3, file: "level-03.png" },
{ level: 4, file: "level-04.png" },
{ level: 6, file: "stage-06.png" },
{ level: 7, file: "level-07.png" },
{ level: 9, file: "level-09.png" },
{ level: 10, file: "level-10.png" },
{ level: 12, file: "stage-12.png" },
{ level: 13, file: "level-13.png" },
{ level: 14, file: "level-14.png" },
{ level: 15, file: "bridge-15.png" },
{ level: 16, file: "level-16.png" },
{ level: 17, file: "level-17.png" },
{ level: 18, file: "stage-18.png" },
{ level: 19, file: "level-19.png" },
{ level: 21, file: "level-21.png" },
{ level: 22, file: "level-22.png" },
{ level: 24, file: "stage-24.png" },
{ level: 25, file: "level-25.png" },
{ level: 27, file: "bridge-27.png" },
{ level: 28, file: "level-28.png" },
{ level: 29, file: "level-29.png" },
{ level: 30, file: "stage-30.png" },
{ level: 0, file: "stage-00.webp" },
{ level: 1, file: "level-01.webp" },
{ level: 3, file: "level-03.webp" },
{ level: 4, file: "level-04.webp" },
{ level: 6, file: "stage-06.webp" },
{ level: 7, file: "level-07.webp" },
{ level: 9, file: "level-09.webp" },
{ level: 10, file: "level-10.webp" },
{ level: 12, file: "stage-12.webp" },
{ level: 13, file: "level-13.webp" },
{ level: 14, file: "level-14.webp" },
{ level: 15, file: "bridge-15.webp" },
{ level: 16, file: "level-16.webp" },
{ level: 17, file: "level-17.webp" },
{ level: 18, file: "stage-18.webp" },
{ level: 19, file: "level-19.webp" },
{ level: 21, file: "level-21.webp" },
{ level: 22, file: "level-22.webp" },
{ level: 24, file: "stage-24.webp" },
{ level: 25, file: "level-25.webp" },
{ level: 27, file: "bridge-27.webp" },
{ level: 28, file: "level-28.webp" },
{ level: 29, file: "level-29.webp" },
{ level: 30, file: "stage-30.webp" },
] as const;
const ANCHOR_LEVELS = PORTRAIT_ANCHORS.map((anchor) => anchor.level);
@@ -167,7 +167,7 @@ class SkinPresenter {
this.poster = document.createElement("img");
this.poster.className = "liang-skin-poster";
this.poster.src = `${ASSET_PREFIX}/liang-poster.png`;
this.poster.src = `${ASSET_PREFIX}/liang-poster.webp`;
this.poster.alt = "";
this.portrait = document.createElement("img");

View File

@@ -9,31 +9,31 @@ export const SETTINGS_NAMESPACE = "liang-intensity-skin";
export const ASSET_PREFIX = `/plugins/${PACKAGE_ID}/assets/`;
const ASSET_SPECS = [
["liang-poster.png", "image/png"],
["portrait-source-v2/stage-00.png", "image/png"],
["portrait-source-v2/level-01.png", "image/png"],
["portrait-source-v2/level-03.png", "image/png"],
["portrait-source-v2/level-04.png", "image/png"],
["portrait-source-v2/stage-06.png", "image/png"],
["portrait-source-v2/level-07.png", "image/png"],
["portrait-source-v2/level-09.png", "image/png"],
["portrait-source-v2/level-10.png", "image/png"],
["portrait-source-v2/stage-12.png", "image/png"],
["portrait-source-v2/level-13.png", "image/png"],
["portrait-source-v2/level-14.png", "image/png"],
["portrait-source-v2/bridge-15.png", "image/png"],
["portrait-source-v2/level-16.png", "image/png"],
["portrait-source-v2/level-17.png", "image/png"],
["portrait-source-v2/stage-18.png", "image/png"],
["portrait-source-v2/level-19.png", "image/png"],
["portrait-source-v2/level-21.png", "image/png"],
["portrait-source-v2/level-22.png", "image/png"],
["portrait-source-v2/stage-24.png", "image/png"],
["portrait-source-v2/level-25.png", "image/png"],
["portrait-source-v2/bridge-27.png", "image/png"],
["portrait-source-v2/level-28.png", "image/png"],
["portrait-source-v2/level-29.png", "image/png"],
["portrait-source-v2/stage-30.png", "image/png"],
["liang-poster.webp", "image/webp"],
["portrait-source-v2/stage-00.webp", "image/webp"],
["portrait-source-v2/level-01.webp", "image/webp"],
["portrait-source-v2/level-03.webp", "image/webp"],
["portrait-source-v2/level-04.webp", "image/webp"],
["portrait-source-v2/stage-06.webp", "image/webp"],
["portrait-source-v2/level-07.webp", "image/webp"],
["portrait-source-v2/level-09.webp", "image/webp"],
["portrait-source-v2/level-10.webp", "image/webp"],
["portrait-source-v2/stage-12.webp", "image/webp"],
["portrait-source-v2/level-13.webp", "image/webp"],
["portrait-source-v2/level-14.webp", "image/webp"],
["portrait-source-v2/bridge-15.webp", "image/webp"],
["portrait-source-v2/level-16.webp", "image/webp"],
["portrait-source-v2/level-17.webp", "image/webp"],
["portrait-source-v2/stage-18.webp", "image/webp"],
["portrait-source-v2/level-19.webp", "image/webp"],
["portrait-source-v2/level-21.webp", "image/webp"],
["portrait-source-v2/level-22.webp", "image/webp"],
["portrait-source-v2/stage-24.webp", "image/webp"],
["portrait-source-v2/level-25.webp", "image/webp"],
["portrait-source-v2/bridge-27.webp", "image/webp"],
["portrait-source-v2/level-28.webp", "image/webp"],
["portrait-source-v2/level-29.webp", "image/webp"],
["portrait-source-v2/stage-30.webp", "image/webp"],
];
function send(res, status, headers = {}) {