neko-armor 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -10
- package/client.js +34 -3
- package/index.js +9 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,7 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
一个用于 DSH 的本地提示词注入插件。分**免费版**与**专业版(赞助)**,同一个安装器分发。
|
|
4
4
|
|
|
5
|
-
作者:**Yz** 版本:`1.0.
|
|
5
|
+
作者:**Yz** 版本:`1.0.6` 插件标识:`neko-armor`
|
|
6
|
+
|
|
7
|
+
## 更新日志
|
|
8
|
+
|
|
9
|
+
### 1.0.6
|
|
10
|
+
|
|
11
|
+
- 安装器改为把插件写进 `dsh.profile.bundles`,插件页能够正确显示「已启用」并允许开关
|
|
12
|
+
- 卸载时同步从 bundles 剔除,恢复干净状态
|
|
13
|
+
- 身份配置改存 `~/.dsh/neko-armor-config.json`,不再往 `cordis.patch.yml` 塞 insert,避免重复挂载
|
|
14
|
+
- 专业版补齐版本显示与栏目标题版本号
|
|
15
|
+
|
|
16
|
+
### 1.0.5
|
|
17
|
+
|
|
18
|
+
- 蓝奏云分享改为文件夹,地址与密码 `yznb`
|
|
19
|
+
|
|
20
|
+
### 1.0.4
|
|
21
|
+
|
|
22
|
+
- 下载入口迁移到 Gitee,新增蓝奏云备用链路
|
|
23
|
+
|
|
24
|
+
### 1.0.3
|
|
25
|
+
|
|
26
|
+
- 版本号改为从 `package.json` 自动注入,杜绝界面显示与包版本不一致
|
|
27
|
+
|
|
28
|
+
### 1.0.2
|
|
29
|
+
|
|
30
|
+
- 修复条款窗口读不到 README 的问题
|
|
31
|
+
|
|
32
|
+
### 1.0.1
|
|
33
|
+
|
|
34
|
+
- 首个可用版本
|
|
6
35
|
|
|
7
36
|
## 两个版本
|
|
8
37
|
|
|
@@ -14,9 +43,22 @@
|
|
|
14
43
|
| 身份 | 固定「小猫娘」 | 可自定义,激活词跟随身份 |
|
|
15
44
|
| 自定义人设 | 无 | 支持 |
|
|
16
45
|
| 附加要求 | 无 | 支持 |
|
|
17
|
-
| 设置栏目 |
|
|
46
|
+
| 设置栏目 | 显示版本信息与赞助入口 | 显示完整配置表单 |
|
|
18
47
|
| 输入框下方状态条 | 显示「小猫娘破甲(免费版)」 | 显示「小猫娘破甲」 |
|
|
19
48
|
|
|
49
|
+
## 版本号从哪来
|
|
50
|
+
|
|
51
|
+
唯一来源是 `package.json` 的 `version` 字段,其余位置全部跟随:
|
|
52
|
+
|
|
53
|
+
| 位置 | 读取方式 |
|
|
54
|
+
| --- | --- |
|
|
55
|
+
| 安装器标题栏 | 打包时注入 `Bootstrap.Version` |
|
|
56
|
+
| 设置栏目内容 | 插件 `index.js` 运行时读 `package.json` |
|
|
57
|
+
| 设置左侧栏目标题 | 客户端 fetch `/api/neko-armor/info` |
|
|
58
|
+
| DSH 插件列表 | DSH 自读 `package.json` |
|
|
59
|
+
|
|
60
|
+
改版本只需要改 `package.json` 一处。
|
|
61
|
+
|
|
20
62
|
## 安装
|
|
21
63
|
|
|
22
64
|
### 方式一:插件市场(免费版,推荐)
|
|
@@ -64,15 +106,24 @@ pnpm add neko-armor
|
|
|
64
106
|
|
|
65
107
|
重启 DSH。
|
|
66
108
|
|
|
67
|
-
|
|
109
|
+
> 安装器装的话会写进 `dsh.profile.bundles` 而不是 insert,这样插件页才能显示「已启用」。
|
|
110
|
+
> 手动装的话两种都行,bundles 方式对插件页更友好。
|
|
111
|
+
|
|
112
|
+
## 挂载方式说明
|
|
68
113
|
|
|
69
|
-
|
|
114
|
+
DSH 有两条挂载路径,效果一样,但插件页的识别不同:
|
|
115
|
+
|
|
116
|
+
| 方式 | 写在哪 | 插件页 |
|
|
70
117
|
| --- | --- | --- |
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
118
|
+
| bundles | `package.json` 的 `dsh.profile.bundles` | 显示已启用,可开关 |
|
|
119
|
+
| insert | `cordis.patch.yml` 的 `- insert:` | 不显示状态,但功能正常 |
|
|
120
|
+
|
|
121
|
+
安装器和新版本都走 bundles。**前提是 `dependencies` 里同时有本插件**,只写 bundles 不写依赖会导致宿主启动失败。
|
|
122
|
+
|
|
123
|
+
```json
|
|
124
|
+
"dependencies": { "neko-armor": "file:../../plugins/neko-armor" },
|
|
125
|
+
"dsh": { "profile": { "bundles": [ ..., "neko-armor" ] } }
|
|
126
|
+
```
|
|
76
127
|
|
|
77
128
|
## 命令行
|
|
78
129
|
|
|
@@ -129,7 +180,7 @@ npm publish --access public
|
|
|
129
180
|
|
|
130
181
|
包内只含 7 个文件(`npm pack --dry-run` 可核对),绝不包含 `neko.md` / `neko.enc`。
|
|
131
182
|
|
|
132
|
-
### 安装程序 →
|
|
183
|
+
### 安装程序 → Gitee Releases
|
|
133
184
|
|
|
134
185
|
```bash
|
|
135
186
|
node packaging/encrypt-pro.mjs # 先重加密专业版提示词
|
|
@@ -138,6 +189,14 @@ node packaging/build.mjs # 打包两版进 EXE
|
|
|
138
189
|
|
|
139
190
|
把 `dist/小猫娘破甲.exe` 上传到 Releases 页面。
|
|
140
191
|
|
|
192
|
+
**每次发布前记得更新本文件**:改上面的版本号、补更新日志,然后:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
node -e "const p=require('./package.json');p.version='1.0.7';p.dsh.version='1.0.7';require('fs').writeFileSync('package.json',JSON.stringify(p,null,2)+'\n')"
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
版本号只改 `package.json` 一处,界面、插件页、安装器标题会自动跟随。
|
|
199
|
+
|
|
141
200
|
改了专业版提示词必须重跑 `encrypt-pro.mjs`,否则 `neko.enc` 仍是旧内容。
|
|
142
201
|
|
|
143
202
|
## 提示词加密(专业版)
|
package/client.js
CHANGED
|
@@ -318,6 +318,10 @@
|
|
|
318
318
|
|
|
319
319
|
children.push(
|
|
320
320
|
react.createElement("div", { key: "h", style: HEADING_STYLE }, t("heading")),
|
|
321
|
+
react.createElement("div", {
|
|
322
|
+
key: "ver",
|
|
323
|
+
style: { fontSize: "12px", color: "#a29aa6", margin: "-2px 0 10px" }
|
|
324
|
+
}, "版本 " + ((info && info.version) ? info.version : "…") + " · npm 插件市场安装"),
|
|
321
325
|
react.createElement("div", { key: "s", style: SUB_STYLE }, t("subtitle")),
|
|
322
326
|
|
|
323
327
|
react.createElement("div", { key: "ft", style: SECTION_TITLE_STYLE }, t("freeTitle")),
|
|
@@ -401,19 +405,46 @@
|
|
|
401
405
|
return ctx.locale.register(SETTINGS_NS, I18N);
|
|
402
406
|
}, "neko-armor: dictionaries");
|
|
403
407
|
|
|
404
|
-
|
|
405
|
-
|
|
408
|
+
// 左侧栏目标题带版本号:先挂默认名,拿到版本后重挂一次
|
|
409
|
+
var labelText = t("title");
|
|
410
|
+
var currentDispose = null;
|
|
411
|
+
|
|
412
|
+
function mountSection() {
|
|
413
|
+
if (currentDispose) {
|
|
414
|
+
currentDispose();
|
|
415
|
+
currentDispose = null;
|
|
416
|
+
}
|
|
417
|
+
currentDispose = ctx.slots.inject("settings.section", function () {
|
|
406
418
|
return ctx.slots.register({
|
|
407
419
|
name: "settings.section",
|
|
408
420
|
id: "neko-armor",
|
|
409
421
|
order: 60,
|
|
410
|
-
label: function () { return
|
|
422
|
+
label: function () { return labelText; },
|
|
411
423
|
locale: SETTINGS_NS
|
|
412
424
|
}, function (slotProps) {
|
|
413
425
|
return react.createElement(NekoFreeSection, Object.assign({ t: t }, slotProps));
|
|
414
426
|
});
|
|
415
427
|
});
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
ctx.effect(function () {
|
|
431
|
+
mountSection();
|
|
432
|
+
return function () {
|
|
433
|
+
if (currentDispose) currentDispose();
|
|
434
|
+
};
|
|
416
435
|
}, "neko-armor: free settings section");
|
|
436
|
+
|
|
437
|
+
// 版本号来自插件自己的 package.json,取到后同步到栏目标题
|
|
438
|
+
fetch("/api/neko-armor/info", { headers: { Accept: "application/json" } })
|
|
439
|
+
.then(function (res) { return res.json(); })
|
|
440
|
+
.then(function (data) {
|
|
441
|
+
if (!data || !data.version) return;
|
|
442
|
+
var next = t("title") + " v" + data.version;
|
|
443
|
+
if (next === labelText) return;
|
|
444
|
+
labelText = next;
|
|
445
|
+
mountSection();
|
|
446
|
+
})
|
|
447
|
+
.catch(function () {});
|
|
417
448
|
} catch (err) {
|
|
418
449
|
console.warn("[neko-armor] 设置栏目未注册:", err);
|
|
419
450
|
}
|
package/index.js
CHANGED
|
@@ -12,10 +12,18 @@ const PROMPT_TEXT = readFileSync(PROMPT_URL, "utf8")
|
|
|
12
12
|
.replace(/\{\{(?!(?:cwd|model|provider)\}\})/g, "{ {");
|
|
13
13
|
|
|
14
14
|
const SELF_URL = new URL("./index.js", import.meta.url);
|
|
15
|
+
const PKG_URL = new URL("./package.json", import.meta.url);
|
|
15
16
|
|
|
16
17
|
const PLUGIN_ID = "neko-armor";
|
|
17
18
|
const PLUGIN_NAME = "小猫娘破甲";
|
|
18
|
-
|
|
19
|
+
// 版本号唯一来源:package.json,避免和发布版本对不上
|
|
20
|
+
const PLUGIN_VERSION = (() => {
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(readFileSync(PKG_URL, "utf8")).version || "0.0.0";
|
|
23
|
+
} catch {
|
|
24
|
+
return "0.0.0";
|
|
25
|
+
}
|
|
26
|
+
})();
|
|
19
27
|
const PLUGIN_AUTHOR = "Yz";
|
|
20
28
|
const EDITION = "free";
|
|
21
29
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neko-armor",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "小猫娘破甲(免费版)— DSH 提示词注入插件,精简破甲内核,固定身份",
|
|
5
5
|
"author": "Yz",
|
|
6
6
|
"license": "CC-BY-NC-SA-4.0",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"dsh": {
|
|
45
45
|
"id": "neko-armor",
|
|
46
46
|
"name": "小猫娘破甲",
|
|
47
|
-
"version": "1.0.
|
|
47
|
+
"version": "1.0.6",
|
|
48
48
|
"author": "Yz",
|
|
49
49
|
"edition": "free",
|
|
50
50
|
"permissions": "系统提示词注入, 客户端状态条, 设置栏目",
|