@xiongtao.xt/tau-plugins 0.27.0 → 0.29.0
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/AI.md +116 -116
- package/API.md +881 -828
- package/BACKEND.md +68 -68
- package/CHANGELOG.md +114 -102
- package/DEVELOPMENT.md +173 -170
- package/EDITOR.md +192 -192
- package/FLASHCARDS.md +92 -92
- package/IMAGES.md +16 -16
- package/LICENSE +21 -21
- package/MCP.md +2 -0
- package/NOTIFICATIONS.md +48 -0
- package/PUBLISH-DATA.md +47 -47
- package/PUBLISH.md +48 -48
- package/SERVICES.md +119 -119
- package/SYNC.md +37 -37
- package/TTS.md +20 -20
- package/UPLOAD.md +35 -35
- package/VIDEO.md +65 -65
- package/WHITEBOARD.md +115 -115
- package/package.json +1 -1
- package/types/packages/editor/source-contracts.d.ts +0 -1
- package/types/packages/plugins/src/contract.d.ts +2 -0
- package/types/packages/plugins/src/index.d.ts +2 -1
- package/types/packages/plugins/src/notifications.d.ts +25 -0
- package/types/packages/plugins/src/pages.d.ts +6 -0
- package/types/packages/plugins/src/publish-data.d.ts +12 -0
- package/types/packages/ui/src/index.d.ts +1 -0
- package/types/packages/ui/src/primitives/DocumentCard.d.ts +11 -0
package/BACKEND.md
CHANGED
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
# 本机后台开发
|
|
2
|
-
|
|
3
|
-
后台入口需要 SDK 0.25.0 及支持包格式 2 的客户端构建。不要只修改版本号就认为客户端已经具备运行能力。普通渲染插件仍使用格式 1。使用 Node 内置模块前执行 `pnpm add -D @types/node@24.0.0 --save-exact` 安装类型声明。
|
|
4
|
-
|
|
5
|
-
仓库提供完整双入口样本:`scripts/plugins/fixtures/backend-system.tsx` 为界面,`backend-system.ts` 为后台。在宿主仓库运行 `node scripts/plugins/verify-backend-author.mjs`,会打包 SDK,在仓库外安装 tarball、类型检查、构建双入口 ZIP,并用真实 Electron utilityProcess 调用样本。结果位于 `output/plugin-backend-sdk/`;该命令不安装到用户目录、不发布到市场。
|
|
6
|
-
|
|
7
|
-
在 manifest.json 中将 formatVersion 设为 2,保留 main.js,并增加 backend:
|
|
8
|
-
|
|
9
|
-
```json
|
|
10
|
-
{
|
|
11
|
-
"entry": "backend.js",
|
|
12
|
-
"runtime": "node",
|
|
13
|
-
"apiVersion": 1,
|
|
14
|
-
"scope": "application",
|
|
15
|
-
"activation": "app-ready",
|
|
16
|
-
"lifetime": "persistent",
|
|
17
|
-
"reason": "连接本机设备并向插件页面提供设备状态",
|
|
18
|
-
"systemAccess": ["network"]
|
|
19
|
-
}
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
模板从 src/backend.ts 构建独立的 backend.js。Node 内置模块可直接引用,第三方 JS 依赖打入 bundle;仅 @tau/plugins/backend 由宿主提供。不打包 node_modules,不运行安装脚本,不让前端入口引用后台文件。main、后台及样式的摘要由构建生成。
|
|
23
|
-
|
|
24
|
-
application 作用域支持 on-demand、app-ready;workspace 支持 on-demand、workspace-ready。lifetime 为 idle 或 persistent,常驻直到所属作用域结束。安装不等于启用,声明不等于授权;无授权的自动启动进入等待处理状态。系统用途字段用于用户知情和审核,不是操作系统沙箱。
|
|
25
|
-
|
|
26
|
-
pnpm build 生成整包 ZIP,pnpm install:local 仍只用于首次开发安装且拒绝覆盖既有目录。后台新版本与界面同包更新,不能只替换 backend.js。
|
|
27
|
-
|
|
28
|
-
## 定义后台方法
|
|
29
|
-
|
|
30
|
-
```ts
|
|
31
|
-
import { defineBackend } from "@tau/plugins/backend";
|
|
32
|
-
import { platform } from "node:os";
|
|
33
|
-
|
|
34
|
-
export default defineBackend({
|
|
35
|
-
create() {
|
|
36
|
-
return {
|
|
37
|
-
activate(ctx) {
|
|
38
|
-
ctx.rpc.register(
|
|
39
|
-
"system.platform",
|
|
40
|
-
{
|
|
41
|
-
input: {
|
|
42
|
-
parse(value: unknown) {
|
|
43
|
-
if (value !== null) throw new Error("此方法不接受参数");
|
|
44
|
-
return null;
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
output: {
|
|
48
|
-
parse(value: unknown) {
|
|
49
|
-
if (typeof value !== "string") throw new Error("平台结果无效");
|
|
50
|
-
return value;
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
() => platform()
|
|
55
|
-
);
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
},
|
|
59
|
-
});
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
渲染入口通过 `await ctx.backend.call("system.platform", null, { signal })` 调用。请求和结果必须为有限 JSON,普通消息最多 1 MiB。后台必须提供输入、输出解析器,异常返回调用方。`ctx.rpc.emit(name, value)` 与 `ctx.backend.subscribe(name, listener)` 用于事件;订阅返回可回收句柄。停用或切库后旧连接失效。
|
|
63
|
-
|
|
64
|
-
外部程序通过 `ctx.process.run(toolId, args, { signal })` 执行,返回 exitCode/stdout/stderr。同时在 backend.systemAccess 声明 process,并以 backend.tools 列出 `{ id, command, args? }`。参数以数组传递,不自动经过 Shell;stdout/stderr 合计最多 512 KiB,单次执行 30 秒。Windows 只接受可解析到唯一 EXE 的工具,使用宿主 Job Object;Unix 使用进程组监督。需要取消时把 RPC 的 request.signal 继续传给工具。
|
|
65
|
-
|
|
66
|
-
不要在模块顶层启动任务。计时器、订阅等使用 `ctx.register` 清理;后台长期任务应响应 `ctx.signal`。主进程扫描不会执行后台,客户端会在首次运行前要求本机代码执行授权。独立进程不会限制 Node 对本机文件、网络的实际权限。
|
|
67
|
-
|
|
68
|
-
插件中心每个后台版本都需人工重点审核,审核者本人的 CI 提交也不自动批准。更新后本机授权重新确认;有在途任务、订阅或插件 MCP 连接时先结束这些工作。已知撤回的中心版本禁止执行;离线只能依据上次已获取的发布状态。原始 stdout/stderr 不写宿主日志,管理页展示有界错误、启动耗时、失败/超时次数及进程资源采样。
|
|
1
|
+
# 本机后台开发
|
|
2
|
+
|
|
3
|
+
后台入口需要 SDK 0.25.0 及支持包格式 2 的客户端构建。不要只修改版本号就认为客户端已经具备运行能力。普通渲染插件仍使用格式 1。使用 Node 内置模块前执行 `pnpm add -D @types/node@24.0.0 --save-exact` 安装类型声明。
|
|
4
|
+
|
|
5
|
+
仓库提供完整双入口样本:`scripts/plugins/fixtures/backend-system.tsx` 为界面,`backend-system.ts` 为后台。在宿主仓库运行 `node scripts/plugins/verify-backend-author.mjs`,会打包 SDK,在仓库外安装 tarball、类型检查、构建双入口 ZIP,并用真实 Electron utilityProcess 调用样本。结果位于 `output/plugin-backend-sdk/`;该命令不安装到用户目录、不发布到市场。
|
|
6
|
+
|
|
7
|
+
在 manifest.json 中将 formatVersion 设为 2,保留 main.js,并增加 backend:
|
|
8
|
+
|
|
9
|
+
```json
|
|
10
|
+
{
|
|
11
|
+
"entry": "backend.js",
|
|
12
|
+
"runtime": "node",
|
|
13
|
+
"apiVersion": 1,
|
|
14
|
+
"scope": "application",
|
|
15
|
+
"activation": "app-ready",
|
|
16
|
+
"lifetime": "persistent",
|
|
17
|
+
"reason": "连接本机设备并向插件页面提供设备状态",
|
|
18
|
+
"systemAccess": ["network"]
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
模板从 src/backend.ts 构建独立的 backend.js。Node 内置模块可直接引用,第三方 JS 依赖打入 bundle;仅 @tau/plugins/backend 由宿主提供。不打包 node_modules,不运行安装脚本,不让前端入口引用后台文件。main、后台及样式的摘要由构建生成。
|
|
23
|
+
|
|
24
|
+
application 作用域支持 on-demand、app-ready;workspace 支持 on-demand、workspace-ready。lifetime 为 idle 或 persistent,常驻直到所属作用域结束。安装不等于启用,声明不等于授权;无授权的自动启动进入等待处理状态。系统用途字段用于用户知情和审核,不是操作系统沙箱。
|
|
25
|
+
|
|
26
|
+
pnpm build 生成整包 ZIP,pnpm install:local 仍只用于首次开发安装且拒绝覆盖既有目录。后台新版本与界面同包更新,不能只替换 backend.js。
|
|
27
|
+
|
|
28
|
+
## 定义后台方法
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import { defineBackend } from "@tau/plugins/backend";
|
|
32
|
+
import { platform } from "node:os";
|
|
33
|
+
|
|
34
|
+
export default defineBackend({
|
|
35
|
+
create() {
|
|
36
|
+
return {
|
|
37
|
+
activate(ctx) {
|
|
38
|
+
ctx.rpc.register(
|
|
39
|
+
"system.platform",
|
|
40
|
+
{
|
|
41
|
+
input: {
|
|
42
|
+
parse(value: unknown) {
|
|
43
|
+
if (value !== null) throw new Error("此方法不接受参数");
|
|
44
|
+
return null;
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
output: {
|
|
48
|
+
parse(value: unknown) {
|
|
49
|
+
if (typeof value !== "string") throw new Error("平台结果无效");
|
|
50
|
+
return value;
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
() => platform()
|
|
55
|
+
);
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
渲染入口通过 `await ctx.backend.call("system.platform", null, { signal })` 调用。请求和结果必须为有限 JSON,普通消息最多 1 MiB。后台必须提供输入、输出解析器,异常返回调用方。`ctx.rpc.emit(name, value)` 与 `ctx.backend.subscribe(name, listener)` 用于事件;订阅返回可回收句柄。停用或切库后旧连接失效。
|
|
63
|
+
|
|
64
|
+
外部程序通过 `ctx.process.run(toolId, args, { signal })` 执行,返回 exitCode/stdout/stderr。同时在 backend.systemAccess 声明 process,并以 backend.tools 列出 `{ id, command, args? }`。参数以数组传递,不自动经过 Shell;stdout/stderr 合计最多 512 KiB,单次执行 30 秒。Windows 只接受可解析到唯一 EXE 的工具,使用宿主 Job Object;Unix 使用进程组监督。需要取消时把 RPC 的 request.signal 继续传给工具。
|
|
65
|
+
|
|
66
|
+
不要在模块顶层启动任务。计时器、订阅等使用 `ctx.register` 清理;后台长期任务应响应 `ctx.signal`。主进程扫描不会执行后台,客户端会在首次运行前要求本机代码执行授权。独立进程不会限制 Node 对本机文件、网络的实际权限。
|
|
67
|
+
|
|
68
|
+
插件中心每个后台版本都需人工重点审核,审核者本人的 CI 提交也不自动批准。更新后本机授权重新确认;有在途任务、订阅或插件 MCP 连接时先结束这些工作。已知撤回的中心版本禁止执行;离线只能依据上次已获取的发布状态。原始 stdout/stderr 不写宿主日志,管理页展示有界错误、启动耗时、失败/超时次数及进程资源采样。
|
package/CHANGELOG.md
CHANGED
|
@@ -1,102 +1,114 @@
|
|
|
1
|
-
# 更新记录
|
|
2
|
-
|
|
3
|
-
## 0.
|
|
4
|
-
|
|
5
|
-
-
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- 新增 `context.
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
- `context.
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
|
|
54
|
-
## 0.
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
## 0.
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
|
|
79
|
-
## 0.
|
|
80
|
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
|
|
85
|
-
## 0.
|
|
86
|
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
## 0.
|
|
92
|
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
|
|
1
|
+
# 更新记录
|
|
2
|
+
|
|
3
|
+
## 0.29.0
|
|
4
|
+
|
|
5
|
+
- 页面组件新增 `pageContext.register(provider)`:通过现有 `get_current_context` 向 AI 提供当前页面状态,返回任意有限 JSON,业务内容与形状完全由作者决定。
|
|
6
|
+
- 只读取当前页面实例,支持状态更新、保活恢复和注销;停用、卸载及切库时自动清理,提供器异常不影响其他上下文。
|
|
7
|
+
- 页面操作继续由作者通过已有 MCP 注册能力提供,通知等已发布能力保持可用。
|
|
8
|
+
|
|
9
|
+
## 0.28.0
|
|
10
|
+
|
|
11
|
+
- 新增 `context.notifications.send`:发送应用内通知、独立窗口通知,或默认按来源窗口焦点自动分流。
|
|
12
|
+
- 支持标题、正文、语义、常驻与最多两个操作按钮;来源显示插件名称。
|
|
13
|
+
- 返回 `Disposable` 撤销单条通知,停用、激活失败及切库时自动回收,旧按钮回调失效。
|
|
14
|
+
|
|
15
|
+
## 0.27.0
|
|
16
|
+
|
|
17
|
+
- 新增通用 `context.ai.requestCapability(name)`,开放应用全部 12 项大模型功能分配。每项声明 `ai:<能力名>` 并由用户独立授权,返回 `chat/stream` 客户端,不需要另配模型或声明自定义 AI 功能。
|
|
18
|
+
- 闪卡 AI 制作使用此通用入口,权限为 `ai:flashcardGeneration`;不再要求传入 `feature`。支持在 user 消息中附带图片,图片不进入用量审计。
|
|
19
|
+
- 宿主模型仍经插件额度、并发限制与用量审计执行;撤销闪卡 AI 权限会取消在途请求,应用未配模型或分配变化时明确失败。
|
|
20
|
+
- 插件自定义 AI 的原有声明、授权与模型分配保持独立;闪卡读写权限和 `contentRef` 来源校验沿用 0.26.0。
|
|
21
|
+
|
|
22
|
+
## 0.26.0
|
|
23
|
+
|
|
24
|
+
- 新增 `context.flashcards`:查询与创建卡组、创建闪卡、宿主制卡窗口、AI 草稿与自动保存;直接读写经 `flashcards:read/write` 授权。
|
|
25
|
+
- 插件 AI 制卡使用声明的 AI 功能及用户分配的模型,受插件授权、额度与用量审计约束。宿主制卡窗口要求用户操作,保存由用户确认。
|
|
26
|
+
- 现有正文引用使用不透明 `contentRef`,校验正文身份及读取权限;停用、切库取消在途任务,自动保存保留已提交结果。
|
|
27
|
+
|
|
28
|
+
## 0.25.0
|
|
29
|
+
|
|
30
|
+
- 新增独立本机后台:格式 2 插件声明 `backend`,通过 `@tau/plugins/backend` 的 `defineBackend` 注册方法,界面经 `context.backend.call/subscribe` 调用与订阅。支持按需或随作用域启动、取消、受监督的外部工具与本机执行授权;构建脚本生成双入口及完整性摘要,详见 BACKEND.md。普通插件继续使用格式 1。
|
|
31
|
+
- 新增业务数据只读接口:`context.data` 读取卡片、文章、项目文档、待办与日程,`context.content.read` 按 `contentRef` 读取正文(Markdown 或编辑器节点)。查询按时间范围、标签筛选并分页。
|
|
32
|
+
- 新增权限:manifest `permissions` 声明可申请的上限(`cards:read`、`articles:read`、`documents:read`、`todos:read`、`calendar:read`),首次调用时由用户选择「仅这次」「始终允许」或「拒绝」。未获准时抛出 `PluginPermissionError`;`context.permissions` 可查询状态与一次申请多项。
|
|
33
|
+
- 新增 `context.events.on`:卡片、文章、项目文档的创建 / 更新 / 删除,待办与日程的集合级变化,以及同步下载后的 `workspace.reset`。事件不携带数据,需要对应读取权限才会送达。
|
|
34
|
+
- 新增写入:卡片与文章的新建、修改、删除,项目文档的标题与标签,待办与日程的新建、修改、完成、删除;`context.content.edit` 追加、插入或替换正文。修改与删除需传入读取时的 `revision`,数据已被别处修改时抛出 `PluginConflictError`。插件删除的内容用户可在 7 天内恢复。
|
|
35
|
+
- 权限词表增加 `*:write` 与 `*:delete`;事件增加 `origin`,可识别由插件写入的变化。
|
|
36
|
+
- 新增 `context.app.pick` 与 `context.app.open`:用 Tau 的搜索窗口让用户选择卡片、文章、项目文档、日记、白板、待办或日程,并打开它们的页面。用户亲手选择即可引用,不需要数据权限;只能在用户操作后调用。
|
|
37
|
+
- 新增正文组件 `ContentEditor` 与 `ContentPreview`:在插件页面嵌入与卡片详情相同的编辑器(协作、已安装的编辑器扩展、文档待办都生效),或只读显示正文开头几块。按所属内容的读取 / 写入权限放行,未授权时由用户点击「允许访问」后再询问。
|
|
38
|
+
- 新增 `context.app.run`:把卡片、文章、项目文档的正文交给 Tau 导出(Markdown、图片、PDF、EPUB)、全屏演示或发起协作共享,界面与卡片详情中的相同。只能在用户操作后调用,不需要数据权限。
|
|
39
|
+
- 新增 `context.entities`:插件创建自己的内容(如周记),每项带一份正文,用 `ContentEditor` 编辑或 `context.content` 读写,不需要业务数据权限。卸载插件后内容保留 7 天,期间重新安装可找回。插件内容可被全局搜索与 AI 检索找到,点击结果按 `registerKind` 声明的 `open` 打开插件页面;`ContentEditor` 增加 `at`,打开到命中处。声明 `mentionable` 的类型可在正文中用 @ 引用;`context.entities.backlinks` 列出引用了它的卡片、文章与项目文档(只含已获准读取的类型)。
|
|
40
|
+
- `context.entities.registerKind` 增加 `icon`,与侧边栏图标同一写法;新增 `PluginIcon` / `PluginIconProps`,`PluginSidebarIcon` / `PluginSidebarIconProps` 保留为同义名。插件内容在搜索、@ 面板、正文中的引用、脉络与漫步里按声明的类型名与图标显示,插件停用或卸载后的 7 天内同样如此。
|
|
41
|
+
- 新增 `context.entities.delete`:删除插件自己的内容及正文,用户可在插件详情页 7 天内恢复,恢复后 ID 与正文不变。
|
|
42
|
+
- `context.storage` 的数据改为保存在笔记库里,随云同步;升级后首次启动自动迁移本机已有的数据,单个值不超过 1 MB。
|
|
43
|
+
- 权限约束的是 SDK 接口;插件仍与应用运行在同一环境,不提供安全隔离。
|
|
44
|
+
|
|
45
|
+
## 0.24.0
|
|
46
|
+
|
|
47
|
+
- 移除 `PluginServices.typst`:宿主不再内置 Typst 编译服务(原生二进制约 37 MB/平台随之从安装包移除)。Typst 排版由 `tau.typst` 插件 v0.2.0 以 WebAssembly 引擎在渲染进程本地完成,首次使用联网下载编译组件与字体并长期缓存。
|
|
48
|
+
- 旧版 `tau.typst` 插件(0.1.x)在新宿主上不再能实时编译,已保存的排版缓存与源码照常显示。
|
|
49
|
+
|
|
50
|
+
## 0.23.1
|
|
51
|
+
|
|
52
|
+
- 修正 FFprobe 升级说明中已删除类型的名称为 `MediaInfo`,接口与 0.23.0 相同。
|
|
53
|
+
|
|
54
|
+
## 0.23.0
|
|
55
|
+
|
|
56
|
+
- 移除 `PluginServices.ffmpeg.probe` 及其媒体信息类型,宿主不再随包分发 FFprobe;`ffmpeg.run` 保留。
|
|
57
|
+
- 视频页面标题、时长和格式查询继续使用 `services.videoExtractor.probe`,该接口由宿主视频解析器提供,不是本地媒体探测接口的替代品。
|
|
58
|
+
- 作者模板升级到本版 SDK,补齐博客发布、独立站点数据接入与升级说明,并修正服务文档中的已移除接口。
|
|
59
|
+
|
|
60
|
+
## 0.22.0
|
|
61
|
+
|
|
62
|
+
- 新增 `context.video.register`,接入视频来源(视频网站、自建服务器等):插件识别链接、解析标题与清晰度,返回播放源描述(单文件、音视频分离或交给宿主解析器),下载、缓存与播放由宿主完成。
|
|
63
|
+
- 视频账号与代理配置通过 `settings.register({ target: "video" })` 注册,接收每个插件一份的 `videoConfig`。
|
|
64
|
+
- 新增 `services.videoExtractor.probe`,查询视频页面的标题与可下载格式;新增插件分类 `video`(在线视频)。
|
|
65
|
+
|
|
66
|
+
## 0.21.0
|
|
67
|
+
|
|
68
|
+
- 新增 context.publish 发布提供方、publishConfig 配置表单和文件式/快照式提交协议,本地导出仍由宿主提供。
|
|
69
|
+
- 新增受控 Git 快照发布与缓存目录选择服务,插件不获得任意命令或宿主文件访问。
|
|
70
|
+
- 插件分类新增博客发布。
|
|
71
|
+
|
|
72
|
+
## 0.20.0
|
|
73
|
+
|
|
74
|
+
- manifest 支持 `categories`(插件中心分类)与 `keywords`(目录搜索),门户上传严格校验,客户端忽略未知值。
|
|
75
|
+
- 博客模板包(`template` 分支)同样支持分类与关键词,只含静态站点产物,不能同时声明代码插件入口。
|
|
76
|
+
- publish-data:站点级数据(`settings`、`collections`、`cardTagTree`、`projectTrees`)改为只在清单中出现;内容文件新增 `links`,只含本文用到且已发布的站内链接目标。
|
|
77
|
+
- publish-client:`readData` 随正文带回清单的 `settings`;检索引擎按索引缓存,不再每次查询重建。
|
|
78
|
+
|
|
79
|
+
## 0.19.0
|
|
80
|
+
|
|
81
|
+
- 补齐 publish-data 类型、publish-client 纯数据客户端及 publish-artifacts 协议校验/定义求值入口;数据与产物声明不连带载入 Editor/React/UI 类型。
|
|
82
|
+
- 普通 SDK/UI 根入口保持类型与 Tau 注入约定;通用源码组件契约与实现由 Editor 公开入口维护,既有源码宿主适配只负责接线。
|
|
83
|
+
- 保留 master 0.18.0 的图片插件及全部已插件化接口。
|
|
84
|
+
|
|
85
|
+
## 0.18.0
|
|
86
|
+
|
|
87
|
+
- 新增 `context.images.register`,按账号配置与模型创建图片生成或编辑实例,返回图片字节和实际 MIME。
|
|
88
|
+
- 图片配置视图通过 `settings.register({ target: "images" })` 注册,接收当前账号的 `imageConfig`;保存按实例隔离,不使用共享凭据。
|
|
89
|
+
- 图片插件在主窗口渲染进程执行,跨窗口调用、上传、取消和停用共用任务生命周期;保留 TTS 与上传等既有接口。
|
|
90
|
+
|
|
91
|
+
## 0.17.0
|
|
92
|
+
|
|
93
|
+
- 新增通用行内源码 API:useInlineSource、insertInlineSource 和 InlineSourceBoundary,复用宿主 Slate 实例与浏览器行内边界处理。
|
|
94
|
+
- 行内源码更新和删除遵守只读、卸载/停驻、目标替换及编辑器提交守卫;不修改 useSourceBlock、EditorKit 或已有节点格式。
|
|
95
|
+
- 保留已有 TTS、上传、聊天、独立服务入口与 TikZ 服务移除边界;客户端版本不变。
|
|
96
|
+
|
|
97
|
+
## 0.16.0
|
|
98
|
+
|
|
99
|
+
- 新增独立 `usePluginServices()`,由插件渲染运行时提供已有编译与转换服务;博客及无服务的宿主返回 undefined。
|
|
100
|
+
- 服务按当前窗口和工作区绑定取消与失效保护,静态编辑器组件无需调用 activate;原有 context.services 保持不变。
|
|
101
|
+
- 不修改 useSourceBlock、EditorKit、文档节点协议或编译接口;保留 TTS、上传、聊天工具展示及 TikZ 服务删除边界。
|
|
102
|
+
|
|
103
|
+
## 0.15.0
|
|
104
|
+
|
|
105
|
+
- 新增 `context.chat.registerToolRenderer`,按本插件 MCP ID 与原始工具名异步登记 React 工具渲染器,激活成功后发布,停用、重载或切库时回收。
|
|
106
|
+
- 本地工具支持 `{ content, render: { version, data } }`,展示数据沿 pi 会话保存并支持历史回放;保留默认展示、宿主审批及失败/取消语义。
|
|
107
|
+
- 渲染器仅匹配绑定工具,组件接收独立执行快照;修复异常订阅中断回收及审批/重试恢复状态的终态收敛。
|
|
108
|
+
- 保留 0.13.0 的 TTS、资源上传接口及 0.14.0 移除 TikZ 服务的边界;UI 包无需升级。
|
|
109
|
+
|
|
110
|
+
## 0.14.0
|
|
111
|
+
|
|
112
|
+
- 移除 `PluginServices.tikz` 和 `context.services.tikz.compile`。TikZ 编译、字体与文档块由独立插件 tau.tikz 提供,宿主不再保留编译实现或转发入口。
|
|
113
|
+
- 插件作者如需 TikZ 绘图,应由自己的插件携带实现;其他宿主编译与转换服务保持不变。
|
|
114
|
+
- 保留 0.13.0 的 TTS、资源上传及其生命周期接口。
|