pi-web-ui 0.71.0 → 0.73.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/CHANGELOG.md +57 -1
- package/README.md +17 -9
- package/README.zh-CN.md +22 -11
- package/dist/server/agent-service.js +526 -71
- package/dist/server/client-state.js +56 -0
- package/dist/server/dsh/dsh-agent-service.js +99 -3
- package/dist/server/index.js +11 -1
- package/dist/server/model-admin.js +135 -23
- package/dist/server/patch-remote-catalog.js +59 -0
- package/dist/server/protocol-version.js +1 -1
- package/dist/server/subagents.js +51 -4
- package/package.json +4 -1
- package/themes/cyberpunk.css +1 -1
- package/themes/dazzle.css +1 -1
- package/themes/md-preview.css +1 -1
- package/themes/translucent.css +2 -2
- package/themes/white.css +1 -1
- package/web/dist/assets/{TerminalPanel-DXNpevIG.js → TerminalPanel-Bz-58xBx.js} +1 -1
- package/web/dist/assets/index-DB1SxjbK.js +335 -0
- package/web/dist/assets/index-Dqbw78CU.css +10 -0
- package/web/dist/index.html +2 -2
- package/web/dist/assets/index-4ge_ioPK.css +0 -10
- package/web/dist/assets/index-Cue012aF.js +0 -335
package/CHANGELOG.md
CHANGED
|
@@ -12,6 +12,60 @@
|
|
|
12
12
|
|
|
13
13
|
暂无未发布内容。
|
|
14
14
|
|
|
15
|
+
## [0.73.0] — 2026-09-10
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- 运行对话强行关闭:左栏所有对话行(含选中/运行中)都有关闭 ✕;有子代理后代时点 ✕ 展开两个选项——仅关已结束的子代理 / 强行全关(`dismiss_conversation` 新增 `force` 参数:中止自身与全部子代理的运行再整体移出,active 对话自动让出;行右键菜单同步)。DSH 引擎 force 放行 active/终端限制(运行中仍需先停止)。
|
|
20
|
+
- 模型列表刷新改为官方目录整表替换:`server/patch-remote-catalog.ts` 在启动时幂等改写 SDK 的 `remote-catalog-provider`,内置服务商(opencode-go 等)在拿到 pi.dev 远程数据后**整表跟随官方目录**,不再与内置静态目录做并集(无旧模型残留、无「新增 N 个」噪音)。补丁失败自动跳过,回落 SDK 默认语义。
|
|
21
|
+
- 模型下拉显示模型 ID:顶栏与目标条的模型下拉在服务商名后补上 `provider/id` 的 id 部分,同名模型可区分。
|
|
22
|
+
- run-trace 插件:运行中对话的时间线自动跟随最新时刻(右侧留 40px 余量后向左滚动)。
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- 问卷(`ask_user_question`)弹出时补上提示音与系统通知:之前只监听扩展 dialog 的 id,问卷出来静默无声。
|
|
27
|
+
- 问卷选项超长文本不再撑破弹窗:选项 label 由「单行省略号」改为自动换行,桌面端选项行可换行;选项内 markdown(表格/代码块/长链接)限制在容器内、超宽时内部横滚。
|
|
28
|
+
- run-trace 插件只在服务端 active 对话变化时跟随(含 state 漏推时的自愈):手动查看历史对话不再被重复推送拽回当前对话。
|
|
29
|
+
- 子代理模板「系统提示词」输入框占位符按语言使用全角/半角冒号。
|
|
30
|
+
- 保存服务商时保留 models.json 中 UI 不认识的字段(#106,经 #108):改为以磁盘旧条目为底合并,provider 级 `headers`/自定义键与模型级 `api`/`baseUrl`/`cost`/`compat`/`thinkingLevelMap` 不再被静默删除;表单字段语义不变(提供即写、清空即删)。
|
|
31
|
+
- 外部改动 models.json 后可手动重载(#107):模型管理页新增「重新加载配置」按钮(`reload_models_config`,复用保存末尾的刷新路径),从磁盘重读并重推模型列表,无需重启服务;页面附带提示文案。
|
|
32
|
+
- 纯覆盖内置 provider 的条目也能「刷新」模型列表(#107):`refreshProviderModels` 在条目缺 provider 级 `baseUrl` 时回退运行时已知地址(仅探测用,不写回磁盘,条目仍保持纯覆盖)。
|
|
33
|
+
- db-client(MySQL)防注入补强:`qMysql` 对库名/表名/列名做严格标识符白名单校验,非法标识符直接报错(与已合入的 `??` 标识符占位符传入改造配套)。
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
|
|
37
|
+
- 中英文 README 重构:截图换成新的对话 / 终端 / 轨迹 / Git / 设置五张,旧图删除,安装与配置说明重排。
|
|
38
|
+
- 对话框内边距与粘性头(sticky)偏移微调。
|
|
39
|
+
|
|
40
|
+
<!-- auto-i18n:start -->
|
|
41
|
+
### i18n
|
|
42
|
+
|
|
43
|
+
- 前端新增 key(13):`dismissFinishedSubagents`、`dismissFinishedSubagentsScoped`、`dismissConversationWithSubagents`、`dismissConversationWithSubagentsMixed`、`dismissStreamingConfirm`、`dismissFinishedOnly`、`dismissForceAll`、`forceDismissTitle`、`forceDismissConversation`、`forceDismissConfirm`、`noFinishedSubagents`、`reloadModelsConfig`、`reloadModelsHint`
|
|
44
|
+
- 服务端新增 key(1):`subagents.wait.empty`
|
|
45
|
+
|
|
46
|
+
## [0.72.0] — 2026-09-09
|
|
47
|
+
|
|
48
|
+
### Added
|
|
49
|
+
|
|
50
|
+
- 模型报错自动重试次数设置(`retryMaxAttempts`,对话设置):大模型 API 出错时按次数自动重试;次数用完本轮停止并标红,最后一轮红色报错旁有「重试」按钮(`retry_last`,协议 v15),手动再跑一轮;设为 0 则失败即停。面板值覆盖注入 SDK 默认(含子代理与会话重建)。
|
|
51
|
+
- 发布时翻译增量自动公示:`scripts/i18n-diff.mjs`(对比 base tag,统计前端 `zh/en` 与服务端 `pick` 新增/变更的 key)与 `scripts/release-notes.mjs`(拼 GitHub Release 说明,`### i18n` 现场生成;`npm run changelog:i18n` 自动维护本节);打 tag 推送后 Action 自动创建/更新 Release。
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
|
|
55
|
+
- 多密钥按项目自愈:删除密钥时所有引用该密钥的项目跟随接管密钥(无剩余则解绑);清空服务商密钥时清掉全部项目的残留引用;切换到不存在的密钥不再种下 stale 引用;切项目自动恢复改为静默 + 不存在即删引用,切项目不再刷屏报错。
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- 设置「消息显示」改名「对话」(中英 + 8 语言包同步)。
|
|
60
|
+
|
|
61
|
+
<!-- auto-i18n:start -->
|
|
62
|
+
### i18n
|
|
63
|
+
|
|
64
|
+
- 前端新增 key(4):`modelRetryAttempts`、`modelRetryHint`、`retryNow`、`retryLastTip`
|
|
65
|
+
- 前端中文变更(1):`settingsMessageDisplay`
|
|
66
|
+
- 前端英文变更(1):`settingsMessageDisplay`
|
|
67
|
+
<!-- auto-i18n:end -->
|
|
68
|
+
|
|
15
69
|
## [0.71.0] — 2026-09-09
|
|
16
70
|
|
|
17
71
|
### Added
|
|
@@ -273,7 +327,9 @@
|
|
|
273
327
|
- 0.35.1(2026-08-27):编辑重问保留附件(#18)+ 全窗口拖放(#19)。
|
|
274
328
|
- 0.29.0(2026-08-23):全局搜索弹窗(Ctrl+K)+ 消息列表惰性窗口化。
|
|
275
329
|
|
|
276
|
-
[Unreleased]: https://github.com/xing-shuyin/pi-web-ui/compare/v0.
|
|
330
|
+
[Unreleased]: https://github.com/xing-shuyin/pi-web-ui/compare/v0.73.0...main
|
|
331
|
+
[0.73.0]: https://github.com/xing-shuyin/pi-web-ui/releases/tag/v0.73.0
|
|
332
|
+
[0.72.0]: https://github.com/xing-shuyin/pi-web-ui/releases/tag/v0.72.0
|
|
277
333
|
[0.71.0]: https://github.com/xing-shuyin/pi-web-ui/releases/tag/v0.71.0
|
|
278
334
|
[0.70.0]: https://github.com/xing-shuyin/pi-web-ui/releases/tag/v0.70.0
|
|
279
335
|
[0.69.0]: https://github.com/xing-shuyin/pi-web-ui/releases/tag/v0.69.0
|
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
Stream conversations, inspect tool calls, manage files, and run your workspace — all from one place.
|
|
20
20
|
|
|
21
|
-

|
|
22
22
|
|
|
23
23
|
</div>
|
|
24
24
|
|
|
@@ -67,6 +67,8 @@ theme switching, and a full settings panel — tuned for daily development.
|
|
|
67
67
|
- **Edit & re-ask** — fork any past question into a new branch and re-prompt; the original conversation stays untouched.
|
|
68
68
|
- Long threads auto-collapse messages older than 30 into lazy summary rows (click to expand).
|
|
69
69
|
- Question navigation — a floating rail plus per-question tags to jump between questions.
|
|
70
|
+
- **Prompt templates** — the empty chat state shows a one-click template gallery (repo init, code review, research, merge conflicts…); click a card to fill the input, or save the current draft as your own template.
|
|
71
|
+
- **Auto-retry on model errors** — configurable retry count per conversation; when retries run out the failed turn is marked red with a one-click Retry button.
|
|
70
72
|
|
|
71
73
|
### 🤖 Subagents & templates
|
|
72
74
|
|
|
@@ -93,7 +95,7 @@ theme switching, and a full settings panel — tuned for daily development.
|
|
|
93
95
|
- Model management — edit `models.json` in the UI and set per-provider API keys (keys/headers never leave the server).
|
|
94
96
|
- Thinking level per model (only the levels the model actually supports are shown).
|
|
95
97
|
- First-run setup wizard.
|
|
96
|
-
- Settings panel — system prompt (append or replace), toggle skills/extensions on/off with immediate effect, save/apply/delete settings presets,
|
|
98
|
+
- Settings panel — system prompt (append or replace), input history & quick phrases, shared markers (todo / notify), toggle skills/extensions on/off with immediate effect, save/apply/delete settings presets, vision-bridge model & switch, and subagent templates.
|
|
97
99
|
|
|
98
100
|
### 🎯 Goal mode
|
|
99
101
|
|
|
@@ -124,7 +126,7 @@ theme switching, and a full settings panel — tuned for daily development.
|
|
|
124
126
|
- WebSocket Origin/Host same-authority check — cross-origin pages are rejected (403); `PI_WEB_ALLOW_ORIGINS` whitelist for reverse proxies.
|
|
125
127
|
- Quiesce drain mode via a local control socket (`server status|quiesce|unquiesce`).
|
|
126
128
|
- Credentials stay server-side — provider headers are never sent to the browser.
|
|
127
|
-
- Sound alerts, Chinese/English
|
|
129
|
+
- Sound alerts, 9 UI languages (Chinese/English built in, plus 8 downloadable packs: German, Spanish, French, Italian, Japanese, Korean, Portuguese, Russian), chat wallpapers, and a recent-projects list (click to switch workspace).
|
|
128
130
|
|
|
129
131
|
### 🚢 Deploy & update
|
|
130
132
|
|
|
@@ -136,12 +138,15 @@ theme switching, and a full settings panel — tuned for daily development.
|
|
|
136
138
|
|
|
137
139
|
<table>
|
|
138
140
|
<tr>
|
|
139
|
-
<td align="center"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/
|
|
140
|
-
<td align="center"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/
|
|
141
|
+
<td align="center"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/chat-prompts.jpeg" alt="Chat with prompt templates"><br><sub>Chat with prompt templates</sub></td>
|
|
142
|
+
<td align="center"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/trajectory.jpeg" alt="Run trajectory timeline"><br><sub>Run trajectory timeline (run-trace plugin)</sub></td>
|
|
141
143
|
</tr>
|
|
142
144
|
<tr>
|
|
143
|
-
<td align="center"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/
|
|
144
|
-
<td align="center"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/
|
|
145
|
+
<td align="center"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/settings.jpeg" alt="Settings panel"><br><sub>Settings panel</sub></td>
|
|
146
|
+
<td align="center"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/terminal.jpeg" alt="Built-in terminal"><br><sub>Built-in terminal</sub></td>
|
|
147
|
+
</tr>
|
|
148
|
+
<tr>
|
|
149
|
+
<td align="center" colspan="2"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/git.jpeg" alt="Git source control panel"><br><sub>Git source control panel</sub></td>
|
|
145
150
|
</tr>
|
|
146
151
|
</table>
|
|
147
152
|
|
|
@@ -314,7 +319,10 @@ straight from GitHub:
|
|
|
314
319
|
| 📬 [webmail](https://github.com/xing-shuyin/pi-web-ui/tree/main/plugins/webmail) | IMAP inbox browsing / search / read / mark / delete + SMTP sending, new-mail notifications, and an optional "allow AI to manage my mailbox" switch (six `mail_*` agent tools). Auto-installs its npm deps on first activation. |
|
|
315
320
|
| 🗄️ [db-client](https://github.com/xing-shuyin/pi-web-ui/tree/main/plugins/db-client) | Database workbench: connection manager + schema tree for MySQL / PostgreSQL / SQLite / SQL Server / MongoDB / Redis — table structure, paginated data with sorting, SQL editor, and row editing. Drivers auto-install on first use. |
|
|
316
321
|
| 📝 [vscode-editor](https://github.com/xing-shuyin/pi-web-ui/tree/main/plugins/vscode-editor) | VS Code-like workbench: multi-root file tree (local + SSH hosts), CodeMirror multi-tab editor, Remote-SSH remote file browsing/editing, draggable multi-terminal panel (xterm.js), SFTP sync & upload/download to your computer. Auto-installs `ssh2`. |
|
|
317
|
-
|
|
|
322
|
+
| 📊 [mermaid](https://github.com/xing-shuyin/pi-web-ui/tree/main/plugins/mermaid) | Renders ` ```mermaid ` fences in chat messages as SVG diagrams (fenced-code renderer plugin, offline-first local engine). |
|
|
323
|
+
| 🧭 [run-trace](https://github.com/xing-shuyin/pi-web-ui/tree/main/plugins/run-trace) | Run trajectory: task → thinking → tools → file changes → result timeline with replay and node details. |
|
|
324
|
+
|
|
325
|
+
`plugins/demo-mailbox` stays in the repo as the minimal plugin template (server entry + client view + two-way message protocol) and test fixture — start there if you want to write your own.
|
|
318
326
|
|
|
319
327
|
Example — install the webmail plugin:
|
|
320
328
|
|
|
@@ -400,7 +408,7 @@ pi-web-ui uninstall <id> # remove a plugin
|
|
|
400
408
|
|
|
401
409
|
Each theme is a **pure `:root` palette override** — a small CSS file that only sets CSS variables (see the `:root` block in `web/src/styles.css` for the full variable list: base colors `--bg/--accent/--term-*` plus derived colors like `--tooltip-bg/--code-bg/--notice-*`). The layout lives ONLY in the bundled `web/src/styles.css`; picking a theme overrides the variables, so every theme works with every build and layout changes never touch themes. Built-in themes are generated by `node make-light-theme.mjs`.
|
|
402
410
|
|
|
403
|
-
Built-in themes ship in the npm package (`themes
|
|
411
|
+
Built-in themes ship in the npm package (`themes/`): `white` (light), `cyberpunk` / `dazzle` (dark), and `translucent` / `transparent` (wallpaper-friendly, pair with a chat wallpaper). The theme picker lives in the top bar (🌞 icon); the current choice is stored per browser in `localStorage`.
|
|
404
412
|
|
|
405
413
|
### Using a theme
|
|
406
414
|
|
package/README.zh-CN.md
CHANGED
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
- **编辑重问** —— 把任意历史问题 fork 成新分支重新提问,原对话不受影响。
|
|
34
34
|
- 超过 30 条的消息自动折叠为摘要行(惰性渲染,点击展开)。
|
|
35
35
|
- 问题导航 —— 右侧浮动导航条 + 每个问题顶部的序号标签,一键跳转。
|
|
36
|
+
- **提示词模板** —— 空对话状态展示一键模板库(仓库初始化、代码审查、调研、合并冲突……);点卡片即填入输入框,也可把当前草稿存成自己的模板。
|
|
37
|
+
- **模型报错自动重试** —— 按对话可配置重试次数;次数用完则失败轮次标红,红色报错旁有一键「重试」按钮。
|
|
36
38
|
|
|
37
39
|
**子代理与模板**
|
|
38
40
|
|
|
@@ -59,7 +61,7 @@
|
|
|
59
61
|
- 主题切换 —— 顶栏选择主题;主题是纯 `:root` 调色板覆盖(布局唯一在 styles.css)。如何添加自定义主题或向仓库贡献主题,见 [主题](#主题)。
|
|
60
62
|
- 思考强度(thinking level)按模型切换(只显示该模型实际支持的档位)。
|
|
61
63
|
- 首次配置引导(PiSetupModal)。
|
|
62
|
-
- 设置面板 ——
|
|
64
|
+
- 设置面板 —— 系统提示词(追加或整体替换)、输入历史与快捷短语、共享标记工具(todo / 通知)、技能/插件一键开关(即时生效)、设置预设保存/应用/删除、视觉桥模型与开关、子代理模板。
|
|
63
65
|
|
|
64
66
|
**目标(Goal)模式**
|
|
65
67
|
|
|
@@ -90,7 +92,7 @@
|
|
|
90
92
|
- WebSocket Origin/Host 同权威校验 —— 跨源页面直接拒绝(403);反代场景用 `PI_WEB_ALLOW_ORIGINS` 白名单。
|
|
91
93
|
- 本地控制 socket 提供 `server status|quiesce|unquiesce`(排空模式:拒绝新工作、存量跑完)。
|
|
92
94
|
- 凭据不下发浏览器 —— provider headers(可能含 Authorization/API key)永不发送到前端。
|
|
93
|
-
-
|
|
95
|
+
- 声音提醒、9 种界面语言(中英内置 + 8 个可下载语言包:德/西/法/意/日/韩/葡/俄)、对话壁纸、最近项目列表(点击即切换工作目录)。
|
|
94
96
|
|
|
95
97
|
**部署与更新**
|
|
96
98
|
|
|
@@ -99,13 +101,19 @@
|
|
|
99
101
|
|
|
100
102
|
## 界面截图
|
|
101
103
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
104
|
+
<table>
|
|
105
|
+
<tr>
|
|
106
|
+
<td align="center"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/chat-prompts.jpeg" alt="对话 + 提示词模板"><br><sub>对话 + 提示词模板</sub></td>
|
|
107
|
+
<td align="center"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/trajectory.jpeg" alt="运行轨迹时间线"><br><sub>运行轨迹时间线(run-trace 插件)</sub></td>
|
|
108
|
+
</tr>
|
|
109
|
+
<tr>
|
|
110
|
+
<td align="center"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/settings.jpeg" alt="设置面板"><br><sub>设置面板</sub></td>
|
|
111
|
+
<td align="center"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/terminal.jpeg" alt="内置终端"><br><sub>内置终端</sub></td>
|
|
112
|
+
</tr>
|
|
113
|
+
<tr>
|
|
114
|
+
<td align="center" colspan="2"><img src="https://raw.githubusercontent.com/xing-shuyin/pi-web-ui/main/assets/git.jpeg" alt="Git 源代码管理面板"><br><sub>Git 源代码管理面板</sub></td>
|
|
115
|
+
</tr>
|
|
116
|
+
</table>
|
|
109
117
|
|
|
110
118
|
## 安装
|
|
111
119
|
|
|
@@ -261,7 +269,10 @@ pi-web-ui server install --engine dsh --port 9000 --cwd /path/to/project
|
|
|
261
269
|
| 📬 [网页邮箱 webmail](https://github.com/xing-shuyin/pi-web-ui/tree/main/plugins/webmail) | IMAP 收件箱浏览/搜索/阅读/标记/删除 + SMTP 发信、新邮件通知,可选「允许 AI 管理邮箱」(六个 `mail_*` AI 工具)。首次激活自动补装 npm 依赖。 |
|
|
262
270
|
| 🗄️ [数据库 db-client](https://github.com/xing-shuyin/pi-web-ui/tree/main/plugins/db-client) | 数据库工作台:MySQL / PostgreSQL / SQLite / SQL Server / MongoDB / Redis 连接管理 + 库表树 —— 表结构、分页排序、SQL 编辑器、行编辑。驱动首次使用自动安装。 |
|
|
263
271
|
| 📝 [编辑器 + SSH vscode-editor](https://github.com/xing-shuyin/pi-web-ui/tree/main/plugins/vscode-editor) | 类 VSCode 工作台:多根文件树(本地 + SSH 主机)、CodeMirror 多标签编辑器、Remote-SSH 远程文件浏览/编辑、可拖拽多终端面板(xterm.js)、SFTP 同步与下载到电脑。自动安装 `ssh2`。 |
|
|
264
|
-
|
|
|
272
|
+
| 📊 [图表 mermaid](https://github.com/xing-shuyin/pi-web-ui/tree/main/plugins/mermaid) | 把对话里的 ` ```mermaid ` 围栏渲染成 SVG 图表(fenced-code 渲染插件,本地引擎离线优先)。 |
|
|
273
|
+
| 🧭 [运行轨迹 run-trace](https://github.com/xing-shuyin/pi-web-ui/tree/main/plugins/run-trace) | 运行轨迹:任务 → 思考 → 工具 → 文件改动 → 结果的时间线聚合视图,支持回放与节点详情。 |
|
|
274
|
+
|
|
275
|
+
`plugins/demo-mailbox` 作为最小插件模板保留在仓库里(服务端入口 + 客户端视图 + 双向消息协议),兼作测试夹具——想自己写插件从这里入手。
|
|
265
276
|
|
|
266
277
|
安装示例(网页邮箱):
|
|
267
278
|
|
|
@@ -329,7 +340,7 @@ pi-web-ui uninstall <id> # 卸载插件
|
|
|
329
340
|
|
|
330
341
|
每个主题是**一份纯 `:root` 调色板覆盖** —— 只写 CSS 变量的声明文件(变量全集见 `web/src/styles.css` 的 `:root`:`--bg/--accent/--term-*` 基础色,加 `--tooltip-bg/--code-bg/--notice-*` 等派生色)。布局只存在于打包的 `web/src/styles.css` 里,选主题只是覆盖变量,因此任何主题都能在所有版本上工作,改布局也不需要碰主题文件。内置主题由 `node make-light-theme.mjs` 生成。
|
|
331
342
|
|
|
332
|
-
内置主题随 npm 包分发(`themes
|
|
343
|
+
内置主题随 npm 包分发(`themes/`):`white`(浅色)、`cyberpunk` / `dazzle`(深色)、`translucent` / `transparent`(壁纸友好半透明/全透明,可配对话壁纸)。主题选择器在顶栏(🌞 图标),当前选择按浏览器存在 `localStorage`。
|
|
333
344
|
|
|
334
345
|
### 使用主题
|
|
335
346
|
|